2013-08-27 19 views
15

的問題哈斯克爾獨立的桌面應用程序驗證(使用谷歌/ Facebook的/嘰嘰喳喳/等賬戶)

我在Haskell寫獨立的桌面應用程序,我很想有一個驗證的支持。我希望用戶能夠通過google/facebook/etc帳戶登錄到此應用程序。

一些研究

,我發現了一些協議和相關哈斯克爾庫:

問題

是否有可能在獨立的Haskell應用程序中創建此類身份驗證?我應該使用哪個庫?或者,也許我應該用C++編寫它並從Haskell使用它?

的主要要求是:

  1. 的身份驗證機制應在所有主要平臺(Linux,Windows中,達爾文)獨立應用程序工作
  2. 的身份驗證機制應與申請工作,而無需GUI。
+1

你是什麼意思與「獨立」?桌面應用程序或Web應用程序不使用框架? – firefrorefiddle

+0

Yesod也將身份驗證用作可能的身份驗證選項之一。請參閱http://hackage.haskell.org/packages/archive/yesod-auth/1.2.1/doc/html/Yesod-Auth-OpenId.html。 – Laar

+0

@MikeHartl:我在談論獨立的桌面應用程序。 (在問題中已修復) –

回答

5

原來的答覆

OpenID的工作原理是將用戶發送到其供應商的網站,然後重定向回了「靠天吃飯」的網站(CF OpenID spec)。這個過程需要一個網絡瀏覽器,所以你必須把你的應用程序集成到你的應用程序中,或者打開一個。在後一種情況下,您還需要一種方法來獲取身份驗證過程的結果,方法是要求用戶複製粘貼或通過在本地主機上運行Web服務器。


第二個答案的問題更新後

  1. 的身份驗證機制應在獨立的應用程序運行在所有主流平臺(Linux,Windows中,達爾文)
  2. 的身份驗證機制應與工作沒有gui的應用程序。

沒有GUI,最好的解決方案可能是提示用戶輸入密碼。 OpenID和OAuth 1.0不支持此用例,但是OAuth 2.0 does。authenticate-oauth和hoauth不支持2.0協議,但有一個hoauth2 package。後在評論

用戶將被允許在Web服務創建accunt給出進一步的細節


第三個答案(使用谷歌exisitng /(等和登錄)的帳號)。他還將在下載獨立applciation,其執行後會提示他登陸的可能性 - 同步設置,賬戶等

在這種情況下,我認爲最簡單的辦法是生成一個獨特的「應用程序鍵「爲每個用戶。然後,他可以在獨立應用程序中輸入他的用戶名和應用程序密鑰,以向自己的網站驗證自己的身份。這種方法避免了詢問他的Google/etc密碼,他甚至不知道他是否使用密碼管理器。

+0

好的,非常感謝!你是對的 - 我在想,OpenID是一個非常普遍的協議。我只是想創建一個身份驗證機制到我的獨立應用程序,這將允許用戶通過他們現有的Gmail(等)帳戶登錄。我已更新問題以更好地描述問題。 –

+0

Additonal我發現,也許有可能使用OpenID與獨立桌面應用程序:http://stackoverflow.com/questions/4634408/can-non-web-applications-use-openid –