Asp.net mvc 我应该如何使用OpenID从Windows Phone 7应用程序验证WCF数据服务?

Asp.net mvc 我应该如何使用OpenID从Windows Phone 7应用程序验证WCF数据服务?,asp.net-mvc,windows-phone-7,openid,wcf-data-services,Asp.net Mvc,Windows Phone 7,Openid,Wcf Data Services,我有一个Windows Phone应用程序,它正在读取和写入WCF数据服务服务中的数据,该服务位于和ASP.NET MVC 3应用程序中 我可以根据需要配置客户端和服务器。如果可行的话,我想使用OpenID,一旦用户在手机上通过身份验证,他们应该能够浏览与他们的OpenID相关的数据 我应该如何配置客户端和服务器以使其工作?OpenID是一个笨拙的选择。听起来用户已经拥有与其帐户关联的数据,这意味着用户必须在某个时间点登录到服务器才能设置此数据,然后使用相同的凭据登录到应用程序才能访问此数据。问

我有一个Windows Phone应用程序,它正在读取和写入WCF数据服务服务中的数据,该服务位于和ASP.NET MVC 3应用程序中

我可以根据需要配置客户端和服务器。如果可行的话,我想使用OpenID,一旦用户在手机上通过身份验证,他们应该能够浏览与他们的OpenID相关的数据


我应该如何配置客户端和服务器以使其工作?

OpenID是一个笨拙的选择。听起来用户已经拥有与其帐户关联的数据,这意味着用户必须在某个时间点登录到服务器才能设置此数据,然后使用相同的凭据登录到应用程序才能访问此数据。问题在于安全地验证客户端应用程序是否确实验证了相关用户。假设客户端应用程序(以某种方式)具有用户的OpenID是不够的,因为服务器不能隐式信任客户端应用程序告诉它的内容

在我的脑海中,我会说,使用OpenID可以做的事情如下


首先,在服务器上设置OpenID身份验证。然后,当客户端应用程序需要进行身份验证时,它应该使用WebBrowser控件指向服务器URL,该URL反过来允许用户使用其OpenID提供程序进行身份验证,并使用身份验证信息将浏览器指向服务器。此时,客户端应用程序不知道用户的身份验证状态,但服务器知道用户是谁。现在,服务器可以生成供客户端使用的一次性身份验证密钥。它可以重定向到一个包含该键的特殊URL,此时客户端检测到所述URL,提取该键,隐藏WebBrowser控件,并使用该键与服务器对话。我相信这是一种安全的身份验证方法,但正如我所说,这只是我的想法。

要在应用程序中使用OpenID,你应该考虑使用嵌入式WebBrowser控件,该控件连接到提供商站点(或可以重定向的站点)。当OpenID提供程序返回到您的站点(嵌入在浏览器控件中)时,您会将必要的标识符传递回应用程序


上有一个使用twitter应用程序(使用OAuth)实现这一点的例子实际上,我编写了一个库,它可以做到这一点: