如果它是浏览器内的 silverlight 应用程序,为什么不将其视为常规网站?流程将类似于
- 用户浏览您的应用
- 在您发送 XAP 之前,您的网站会显示身份提供者列表。用户选择一个并被重定向到登录。
- 用户登录后,您将收到一个发布到您的应用程序(即社交游戏工具包)的令牌。好消息是社交游戏工具包已经在网站上提供了与 ACS 的集成,因此无需做太多工作。用户将获得由 Windows Identity Foundation 生成的 cookie,其中包含声明(目前不涉及 Silverlight)。
- 现在您发送 XAP 并加载 Silverlight 应用程序
- 从现在开始,从 XAP 到您的应用程序(将具有社交游戏工具包)的每个请求都将填充 Principal,因为 WIF cookie 会在每个请求中发送。
如果您想稍微改变用户体验,而不是在常规的 HTML/asp.net 页面中显示身份提供者列表,您想从 Silverlight 应用程序(如 Windows Phone 实验室显示)中完成。然后,您只需要使用 ACS JSON 端点,该端点列出了您的 Silverlight 应用程序中的身份提供者。
该工具包已经在这样做了,您可以从以下内容中提取基本思想:
https://github.com/WindowsAzure-Toolkits/wa-toolkit-games/blob/master/code/SocialGames.Web/Services/AuthService.cs#L29
以 JSON 格式获取身份提供者列表的请求如下所示:
https://your_servicenamespace.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=your_application_realm&version=1.0&context=some_contextual_data_youwanttokeepacrossredirects "
最后,这个实验室也应该对你有所帮助
http://msdn.microsoft.com/en-us/IdentityTrainingCourse_SilverligthAndIdentity2010
FWIW,Windows Phone 的工作方式是使用 ACS 中的 JavaScript 通知端点,这与我上面描述的不同。
流程类似于
- 手机显示登录选项(Facebook、LiveID 等)
- 用户点击其中之一
- 用户被重定向到 ACS,然后被重定向到选择的身份提供者
- 用户登录并将某种令牌发送回 ACS(取决于身份提供者)
- 此时 ACS 将使用一些 JavaScript 渲染一个 HTML 页面。这将指示浏览器(托管在您的 Windows Phone 中)发送带有有效负载(在本例中为令牌)的外部信号。
window.external.Notify('THE_TOKEN');
- 手机应用程序将检测到通知并获取令牌
我不确定 JavaScript 通知机制将如何在 Silverlight 浏览器内应用程序上工作,因为您已经在浏览器中。但是,如果您尝试这样做,请随时通知我们。
马蒂亚斯