问题
我正在Haskell编写独立桌面应用程序,我很乐意在其中获得身份验证支持。我希望用户能够通过google / facebook / etc帐户登录此应用程序。
一些研究
我找到了一些协议和相关的haskell库:
Yesod
(网络框架)密切相关,第二个支持OAuth
版本1.0
(目前有版本2.0
可用)问题
是否可以在独立的Haskell应用程序中创建此类身份验证?我应该使用什么库?或者也许我应该用C ++编写它并从Haskell中使用它?
主要要求是:
答案 0 :(得分:5)
原始回答
OpenID的工作原理是将用户发送到其提供商的网站,然后将其重定向回“依赖”网站(参见OpenID spec)。此过程需要Web浏览器,因此您必须将其中一个集成到您的应用程序中或打开一个。在后一种情况下,您还需要一种方法来获取身份验证过程的结果,方法是要求用户复制粘贴它或在localhost上运行Web服务器。
问题更新后的第二个答案
- 身份验证机制应该适用于所有主要平台(Linux,Windows,Darwin)上的独立应用程序
- 认证机制应该适用于没有gui的应用程序。
醇>
如果没有GUI,最好的解决方案可能就是提示用户输入密码。 OpenID和OAuth 1.0不支持此用例,但OAuth 2.0 does。 authenticate-oauth和hoauth不支持2.0协议,但有一个hoauth2 package。
在评论
中给出进一步详情后的第三个答案允许用户在网络服务中创建擅长(并使用exisitng google /(etc)帐户登录)。他还可以下载独立的applciation,执行后会提示他登录 - 同步设置,帐户等。
在这种情况下,我认为最简单的解决方案是为每个用户生成一个唯一的“应用密钥”。然后,他可以在独立应用程序中输入他的用户名和应用程序密钥,以便向您的网站验证自己的身份。这种方法避免询问他的Google / etc密码,他甚至不知道他是否使用密码管理器。