从我对 OpenID 的大部分阅读来看,似乎可能需要浏览器。我正在编写一个 WCF 应用程序,并希望使用 OpenID 作为身份验证方法,但我的应用程序不是 Web 应用程序。是否可以在不需要 Web 浏览器的情况下一起使用 WCF 和 OpenID?
虽然 OpenID 可以在其规范中宣传其独立于 cookie 等,因为规范实际上并没有规定如何使用这些东西,但实际上,除了登录网站之外,我从未见过一个好的 OpenID 解决方案,这实际上是它的功能主要用例。
然而,有一个很好的方法仍然使用 WCF 和 OpenID。将 OAuth 添加到其中。这DotNetOpenAuth库有一个示例,展示了 WCF 客户端如何获得授权以通过 OAuth 调用 WCF 服务,其中在服务端,用户使用 OpenID 登录作为授权过程的一部分。
因此,基本上,如果您的 WCF 应用程序需要“登录”才能调用 WCF 服务,作为一次性设置的一部分:
- 应用程序会弹出一个浏览器,用户可以在其中看到 WCF 服务网站(OAuth 服务提供商)
- 用户使用其 OpenID 登录(尽管用户可能已经登录,在这种情况下他们可以跳过此步骤)
- OAuth SP 询问用户“您想要授权此 [wcf 应用] 访问此站点吗?”
- 用户说是,然后关闭浏览器。
- 借助 OAuth 协议,WCF 应用程序现在可以访问 WCF 服务。
这是有效的,因为在幕后,当用户通过 Web 浏览器对服务说“是”时,会向 WCF 应用程序分配一个特殊的机器友好凭据,它与每个 WCF 服务调用类似的方式使用用户名/密码将是。
查看 DotNetOpenAuth 库。它包含示例以及使其正常工作所需的一切。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)