【发布时间】:2011-06-05 18:51:29
【问题描述】:
如何使我的桌面应用程序成为 OpenID 依赖方?
【问题讨论】:
标签: wpf openid dotnetopenauth
如何使我的桌面应用程序成为 OpenID 依赖方?
【问题讨论】:
标签: wpf openid dotnetopenauth
在我看来,您应该提供一个小的 Web 浏览器窗口以完成身份验证。交互不会通过您的代码。
我不建议使用网络抓取工具来执行此操作。这样做时,您将代码放在用户的服务器和用户之间,这违反了依赖方看不到用户密码的约定。
OAuth 是用于桌面应用程序的正确技术,但它不使用 OpenID 拥有的现有密码生态系统,这不是 OP 问题的一部分。
【讨论】:
不要这样做。
即使尝试这样做也表明对 OpenID 提供的安全模型缺乏了解。您必须问自己,否则您将用于桌面应用程序的密码正在保护什么。它是否保护本地机器本身的资产?如果是这样,OpenID 就没用了,因为欺骗网络是一件简单的事情,这样我就可以在不拥有 OpenID 的情况下侵入桌面应用程序。您对用户身份欺骗持开放态度。您是否正在尝试保护网络资产? OpenID 再次失败,因为它没有授权您的桌面应用程序访问这些网络资产,这表明 OpenID 背后正在进行一些其他身份验证,因此您再次没有添加任何价值。
OAuth 是适合让您的桌面应用访问和保护网络资源的协议。如果您要保护台式计算机上的本地资产,则本地加密是唯一可行的方法。
【讨论】:
由于 OpenID 有一个指定的协议,它要么一直工作(假设提供者符合)要么根本不工作。此外,由于 OpenID 协议(至少是身份验证位,请参阅 the specification)由简单的 HTTP 请求组成,因此您可以在桌面应用程序中实现该协议,前提是您知道如何发出此类请求。
虽然这通常被认为是一个坏主意,因为有更好的技术 (OAuth) 并且它破坏了用户体验(与浏览器中的 OpenID 不同 - 请参阅 OpenID For Desktop Applications: How? When?)。
【讨论】:
看看this question,在我看来OAuth可以为你做到这一点。
【讨论】: