【问题标题】:Can non-web applications use OpenID?非 Web 应用程序可以使用 OpenID 吗?
【发布时间】:2011-06-05 18:51:29
【问题描述】:

如何使我的桌面应用程序成为 OpenID 依赖方?

【问题讨论】:

    标签: wpf openid dotnetopenauth


    【解决方案1】:

    在我看来,您应该提供一个小的 Web 浏览器窗口以完成身份验证。交互不会通过您的代码。

    我不建议使用网络抓取工具来执行此操作。这样做时,您将代码放在用户的服务器和用户之间,这违反了依赖方看不到用户密码的约定。

    OAuth 是用于桌面应用程序的正确技术,但它不使用 OpenID 拥有的现有密码生态系统,这不是 OP 问题的一部分。

    【讨论】:

    • 你是对的。我根本不想看到密码。这就是重点。
    【解决方案2】:

    不要这样做

    即使尝试这样做也表明对 OpenID 提供的安全模型缺乏了解。您必须问自己,否则您将用于桌面应用程序的密码正在保护什么。它是否保护本地机器本身的资产?如果是这样,OpenID 就没用了,因为欺骗网络是一件简单的事情,这样我就可以在不拥有 OpenID 的情况下侵入桌面应用程序。您对用户身份欺骗持开放态度。您是否正在尝试保护网络资产? OpenID 再次失败,因为它没有授权您的桌面应用程序访问这些网络资产,这表明 OpenID 背后正在进行一些其他身份验证,因此您再次没有添加任何价值。

    OAuth 是适合让您的桌面应用访问和保护网络资源的协议。如果您要保护台式计算机上的本地资产,则本地加密是唯一可行的方法。

    【讨论】:

      【解决方案3】:

      由于 OpenID 有一个指定的协议,它要么一直工作(假设提供者符合)要么根本不工作。此外,由于 OpenID 协议(至少是身份验证位,请参阅 the specification)由简单的 HTTP 请求组成,因此您可以在桌面应用程序中实现该协议,前提是您知道如何发出此类请求。

      虽然这通常被认为是一个坏主意,因为有更好的技术 (OAuth) 并且它破坏了用户体验(与浏览器中的 OpenID 不同 - 请参阅 OpenID For Desktop Applications: How? When?)。

      延伸阅读:OpenID for Desktop Clients

      【讨论】:

      • 在 IIW8 会议上讨论的 Linden 的 OpenID + OAuth 解决方案听起来很有效。但这肯定不简单。
      【解决方案4】:

      看看this question,在我看来OAuth可以为你做到这一点。

      【讨论】:

      • 我也考虑过 OAuth,但它忽略了使用现有 OpenID 生态系统获取密码的意义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 2010-10-23
      • 1970-01-01
      相关资源
      最近更新 更多