使用OpenID和WCF而不使用浏览器,是否可能?

时间:2009-05-09 15:52:05

标签: wcf openid

从我在OpenID上所做的大部分阅读中,似乎可能需要浏览器。我正在编写一个WCF应用程序,并希望使用OpenID作为身份验证方法,但我的应用程序不是一个Web应用程序。是否可以在不需要Web浏览器的情况下一起使用WCF和OpenID?

3 个答案:

答案 0 :(得分:10)

虽然OpenID可以宣称它的规范独立于cookie,因为规范并没有真正规定这些东西是如何使用的,实际上除了登录网站之外我从未见过一个好的OpenID解决方案,确实是它的主要用例。

然而,有一种很好的方法可以继续使用WCF和OpenID。将OAuth添加到组合中。 DotNetOpenAuth库有一个示例,显示如何通过OAuth授权WCF客户端调用WCF服务,在服务端,用户使用OpenID作为授权过程的一部分登录。

所以基本上如果你的WCF应用需要“登录”才能调用WCF服务,作为一次性设置的一部分:

  1. 该应用会弹出一个浏览器,用户可以看到WCF服务网站(OAuth服务提供商)
  2. 用户使用其OpenID登录(尽管用户可能已经登录,在这种情况下,他们可以跳过此步骤)
  3. OAuth SP询问用户“您是否要授权此[wcf app]访问此网站?”
  4. 用户说是,并关闭浏览器。
  5. 由于OAuth协议,WCF应用现在可以访问WCF服务。
  6. 这是因为在幕后,当用户通过Web浏览器对服务说“是”时,会为WCF应用程序分配一个特殊的机器友好凭证,它与每个WCF服务调用一样,以类似的方式使用用户名/密码将是。

    查看DotNetOpenAuth库。它有样本和你需要的一切来使这个工作。

答案 1 :(得分:1)

从阅读OpenID Authentication 2.0 Specification开始,我似乎已经得到了答案:

  

虽然协议中没有任何内容需要JavaScript或现代浏览器,但身份验证方案可以很好地与“AJAX”式设置配合使用。这意味着最终用户可以向依赖方证明自己的身份,而无需离开当前的网页。

     

OpenID身份验证仅使用标准HTTP(S)请求和响应,因此不需要User-Agent或其他客户端软件的任何特殊功能。 OpenID与使用cookie或依赖方或OpenID提供程序会话管理的任何其他特定机制无关。用户代理的扩展可以简化最终用户交互,但不需要使用协议。

现在我只需找出一种聪明的方法让它与基于WCF的依赖方合作......

答案 2 :(得分:1)