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

Woj*_*ilo 15 openid authentication haskell oauth web

问题

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

有些研究

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

问题

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

主要要求是:

  1. 身份验证机制应该在所有主要平台(Linux,Windows,Darwin)上的独立应用程序中运行
  2. 认证机制应该与没有gui的应用程序一起使用.

Cha*_*aco 5

原始答案

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


问题更新后的第二个答案

  1. 身份验证机制应该在所有主要平台(Linux,Windows,Darwin)上的独立应用程序中运行
  2. 认证机制应该与没有gui的应用程序一起使用.

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


在评论中给出进一步细节后的第三个答案

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

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