Haskell独立桌面应用程序身份验证(使用google / facebook / twitter / etc帐户)

时间:2013-08-27 17:57:58

标签: authentication haskell web oauth openid

问题

我正在Haskell编写独立桌面应用程序,我很乐意在其中获得身份验证支持。我希望用户能够通过google / facebook / etc帐户登录此应用程序。

一些研究

我找到了一些协议和相关的haskell库:

问题

是否可以在独立的Haskell应用程序中创建此类身份验证?我应该使用什么库?或者也许我应该用C ++编写它并从Haskell中使用它?

主要要求是:

  1. 身份验证机制应该适用于所有主要平台(Linux,Windows,Darwin)上的独立应用程序
  2. 认证机制应该适用于没有gui的应用程序。

1 个答案:

答案 0 :(得分:5)

原始回答

OpenID的工作原理是将用户发送到其提供商的网站,然后将其重定向回“依赖”网站(参见OpenID spec)。此过程需要Web浏览器,因此您必须将其中一个集成到您的应用程序中或打开一个。在后一种情况下,您还需要一种方法来获取身份验证过程的结果,方法是要求用户复制粘贴它或在localhost上运行Web服务器。


问题更新后的第二个答案

  
      
  1. 身份验证机制应该适用于所有主要平台(Linux,Windows,Darwin)上的独立应用程序
  2.   
  3. 认证机制应该适用于没有gui的应用程序。
  4.   

如果没有GUI,最好的解决方案可能就是提示用户输入密码。 OpenID和OAuth 1.0不支持此用例,但OAuth 2.0 does。 authenticate-oauth和hoauth不支持2.0协议,但有一个hoauth2 package


在评论

中给出进一步详情后的第三个答案
  

允许用户在网络服务中创建擅长(并使用exisitng google /(etc)帐户登录)。他还可以下载独立的applciation,执行后会提示他登录 - 同步设置,帐户等。

在这种情况下,我认为最简单的解决方案是为每个用户生成一个唯一的“应用密钥”。然后,他可以在独立应用程序中输入他的用户名和应用程序密钥,以便向您的网站验证自己的身份。这种方法避免询问他的Google / etc密码,他甚至不知道他是否使用密码管理器。