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

标签 authentication haskell web oauth openid

问题

我正在写 Haskell 中的独立桌面应用程序我很想在其中提供身份验证支持。我希望用户能够通过 google/facebook/etc 帐户登录此应用程序。

一些研究

我发现了一些协议(protocol)和相关的 haskell 库:

  • OpenID ( openidauthenticate ) - 但正如@Changaco 所指出的 - 该协议(protocol)连接到网络浏览器。
  • OAuth ( authenticate-oauth , hoauth ) - 但第一个似乎与 Yesod 密切相关(网络框架)和第二个支持OAuth版本 1.0 (目前有版本 2.0 可用)

  • 问题

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

    主要要求是:
  • 身份验证机制应在所有主要平台(Linux、Windows、Darwin)上的独立应用程序中工作
  • 身份验证机制应该与没有 gui 的应用程序一起使用。
  • 最佳答案

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

    问题更新后的第二个答案

    1. The authentication mechanism should work in standalone application on all major platforms (Linux, Windows, Darwin)
    2. 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/

    相关文章:

    php - 如何测试通过xampp连接到mysql数据库的php登录?

    PHP AJAX登录,这种方法安全吗?

    java - 在 Java/Spring 项目中组织版本化 REST API 代码的最佳实践(示例?)?

    javascript - 跨动态数量的单选按钮组实现依赖

    asp.net - 多个网站进行通信的一种方式

    java - Play 框架 session 和 cookie 是如何工作的?

    java - 具有自定义身份验证过滤器的 WebSecurityConfigurerAdapter - 依赖性问题

    haskell - Parsec 不识别 block 注释

    mongodb 通过 Haskell : How to enable text search

    haskell - 在值构造函数上指定不变量