11

我正在开发一个允许从 Windows Phone 应用程序和 MVC 3 Web 界面输入和显示数据的应用程序。电话客户端的数据访问是通过托管在 MVC 3 应用程序中的经过身份验证的 WCF 服务。用户将跟踪他们独有的信息,因此该服务只会显示我输入的数据。

在这种情况下处理身份的最简单方法是什么?我曾想过使用 Windows Live ID,因为电话应用程序可以访问 Windows Live Anonymous ID 属性。但是,据我所知,没有办法允许基于 Web 的 Windows Live 登录,它给了我相同的 Windows Live 匿名 ID - Windows Live Messenger Connect 登录给了我一个特定于站点的唯一 ID,这将是与电话客户端的匿名 ID 不同。

或者,我可以使用Facebook SDK在客户端和手机上使用 Facebook 身份验证。我担心的是确保服务呼叫的安全。我在想,当设备第一次使用 Facebook ID 连接到服务时,服务器会向它颁发一个密钥,并且 Facebook ID 和服务器颁发的密钥都是服务访问所必需的。

对上面的想法?我缺少一个更简单的解决方案吗?

4

3 回答 3

2

API 密钥的替代方法是使用基于声明的身份和安全令牌。您可以将 Windows Azure 访问控制服务用作安全令牌的受信任发行者,其附加值是预先配置为使用 LiveID、Facebook、Google、任何 OpenID 和任何 WS-Federation 身份提供者。网站和 Web 服务都信任 ACS。

ACS 将为您提供网站的 SAML 令牌(允许您的用户使用 LiveID、Google 或 FB 登录)。

ACS 还可以发布简单 Web 令牌 (SWT),这对于 REST 服务尤其适用(假设电话客户端使用它)。

您不能在应用程序中使用与手机关联的 LiveID,但您仍然可以使用 LiveID(或任何其他身份提供者)。这是一个如何做的例子。它使用在手机应用程序中嵌入 Web 浏览器的常用方法,并用于所有安全令牌协商。

使用 ACS 为您提供了很大的灵活性,而且没有任何复杂性。使网站“声明感知”并信任 ACS 非常简单。更多示例:http: //claimsid.codeplex.com

于 2011-04-02T17:29:13.553 回答
2

亲爱的乔恩,我在 WP 开发方面没有经验,但我对 WCF Auth 做了一些搜索。最近几天,发现 apiKey auth 对我来说几乎是最好的方法。Rob Jacobs 在这篇文章中解释了它是如何工作的;

http://blogs.msdn.com/b/rjacobs/archive/2010/06/14/how-to-do-api-key-verification-for-rest-services-in-net-4.aspx

于 2011-03-28T22:20:40.950 回答
1

如果您需要将电话链接到 MVC 站点上的用户,您可以像Netflix亚马逊为 Roku 和其他设备所做的那样,并进行某种激活过程。为了更容易,您可以使用由 MVC 站点生成的 QR 码或其他类型的条码,让用户对其拍照,然后使用Silverlight ZXing 条码扫描库处理图像。可能有点复杂,但它适用于所有机顶盒。

于 2011-03-28T23:17:00.477 回答