一个简单的场景:
假设我们在云中有一个Web应用程序,它允许用户使用OpenID注册。(我愿意使用Windows Live ID作为替代)他们可以登录并更新一些元数据,例如他们最喜欢的颜色。
如果我现在想要从桌面客户端获取此信息,我该如何做?我可能需要公开一个Web服务来查询此信息,但是身份验证如何呢?
这里有DotNetOpenAuth和Windows Identity Foundation,我们还有CardSpace等等。
但是我该从哪里开始呢?我需要哪一个?3个都需要吗?
那STS呢,有没有OpenID / Windows Live ID的呢?
有没有人看到一个使用这些技术的样本,可以做我正在寻找的事情?有什么建议吗?
发布于 2010-03-02 11:41:05
在您的脑海中分离身份验证和授权的概念。您仅对网站上的用户进行身份验证。您可以使用OpenID、InfoCard、STS或username+password执行此操作。调用您的服务以获取特定于用户的信息的客户端应用程序必须经过授权,这传统上意味着它们要求用户提供其username+password,这是一种反模式,当您使用更强大或可选的凭据(如OpenID或InfoCard )时,该应用程序会崩溃。
授权应用程序应该使用委派协议,例如OAuth,它允许用户访问允许桌面应用程序访问用户私人数据的网页,而不需要用户向应用程序暴露他们的凭据。
DotNetOpenAuth支持这个完整的场景。它附带了示例OAuth和OpenID站点。我建议你查看演示OpenID登录的project templates ( web forms one甚至包括InfoCard登录选项)和OAuth服务提供商,让它对web用户都有效,并授权这些开箱即用的客户端应用。
https://stackoverflow.com/questions/2356110
复制相似问题