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

Authentication Haskell独立桌面应用程序身份验证(使用google/facebook/twitter/etc帐户),authentication,haskell,web,oauth,openid,Authentication,Haskell,Web,Oauth,Openid,问题 我正在用Haskell编写一个独立桌面应用程序,我希望它支持身份验证。我希望用户能够通过google/facebook/etc帐户登录此应用程序 一些研究 我找到了一些协议和相关的haskell库: (,)-但正如@Changaco所指出的,该协议连接到web浏览器 (,)-但第一个版本似乎与Yesod(web框架)密切相关,第二个版本支持OAuthversion1.0(目前有可用的2.0) 问题 是否可以在独立的Haskell应用程序中创建这样的身份验证?我应该使用什么图书馆?或者我

问题

我正在用Haskell编写一个独立桌面应用程序,我希望它支持身份验证。我希望用户能够通过google/facebook/etc帐户登录此应用程序

一些研究

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

  • (,)-但正如@Changaco所指出的,该协议连接到web浏览器
  • (,)-但第一个版本似乎与
    Yesod
    (web框架)密切相关,第二个版本支持
    OAuth
    version
    1.0
    (目前有可用的
    2.0
问题

是否可以在独立的Haskell应用程序中创建这样的身份验证?我应该使用什么图书馆?或者我应该用C++写,然后用Haskell?< /P> 主要要求是:

  • 身份验证机制应在所有主要平台(Linux、Windows、Darwin)上的独立应用程序中工作
  • 认证机制应该适用于没有gui的应用程序
  • 原始答案

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


    问题更新后的第二个答案

  • 身份验证机制应在所有主要平台(Linux、Windows、Darwin)上的独立应用程序中工作
  • 认证机制应该适用于没有gui的应用程序
  • 如果没有GUI,最好的解决方案可能只是提示用户输入密码。OpenID和OAuth 1.0不支持此用例,但是。authenticate oauth和hoauth不支持2.0协议,但存在一个


    在评论中给出更多细节后的第三个答案

    用户将被允许在web服务中创建Account(并使用现有的google/(etc)帐户登录)。他还可以下载独立应用程序,执行后会提示他登录,以同步设置、帐户等


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

    你说的“独立”是什么意思?没有使用framework?authenticate的桌面应用程序或web应用程序也被YesSOD用作可能的身份验证选项之一。看。@MikeHartl:我说的是独立桌面应用程序。(修正问题)我很好奇:为什么一个独立的应用程序需要Google/Facebook/etc认证?你想做什么?@Changaco:User将被允许在web服务中创建Account(并使用现有的google/(etc)帐户登录)。他还可以下载独立应用程序,执行后会提示他登录-以同步设置、帐户等。现在有意义吗?好的,非常感谢!你是对的,我在想,OpenID是一个非常通用的协议。我只想为我的独立应用程序创建一个身份验证机制,允许用户通过他们现有的gmail(etc)帐户登录。我已经更新了问题以更好地描述问题。此外,我发现,可能可以将OpenID与独立桌面应用程序一起使用: