问题
我正在写 Haskell 中的独立桌面应用程序我很想在其中提供身份验证支持。我希望用户能够通过 google/facebook/etc 帐户登录此应用程序。
一些研究
我发现了一些协议(protocol)和相关的 haskell 库:
Yesod
密切相关(网络框架)和第二个支持OAuth
版本 1.0
(目前有版本 2.0
可用)问题
是否可以在独立的 Haskell 应用程序中创建这样的身份验证?我应该使用什么库?或者也许我应该用 C++ 编写它并从 Haskell 中使用它?
主要要求是:
最佳答案
原始答案
OpenID 的工作原理是将用户发送到其提供商的网站,然后将其重定向回“依赖”网站(参见 OpenID spec)。这个过程需要一个网络浏览器,所以你要么必须将一个集成到你的应用程序中,要么打开一个。在后一种情况下,您还需要一种方法来获取身份验证过程的结果,方法是要求用户复制粘贴它,或者在 localhost 上运行 Web 服务器。
问题更新后的第二个答案
- The authentication mechanism should work in standalone application on all major platforms (Linux, Windows, Darwin)
- The authentication mechanism should work with application without gui.
如果没有 GUI,最好的解决方案可能就是提示用户输入密码。 OpenID 和 OAuth 1.0 不支持此用例,但 OAuth 2.0 does . authenticate-oauth 和 hoauth 不支持 2.0 协议(protocol),但是有一个 hoauth2 package .
在评论中提供更多详细信息后的第三个答案
User will be allowed to create accunt in a web service (and login using exisitng google / (etc) accounts). He will also have the possibility of downloading standalone applciation, which after execution will prompt him to login - to synchronize the settings, accounts etc.
在这种情况下,我认为最简单的解决方案是为每个用户生成一个唯一的“应用程序 key ”。然后,他可以在独立应用程序中输入他的用户名和应用程序 key ,以对您的网站进行身份验证。这种方法避免了向他询问他的 Google/etc 密码,他甚至可能不知道他是否使用密码管理器。
关于authentication - Haskell 独立桌面应用程序身份验证(使用 google/facebook/twitter/etc 帐户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18472448/