如何将浏览器内的Silverlight客户端连接到ACS - Azure - WIF - 实体框架(公共和私有数据库模型)

时间:2012-06-02 21:47:00

标签: silverlight entity-framework azure wif acs

亲爱的贡献者,您好!

我再次陷入困境,我已经研究了如何调整这个精彩教程的教程或一些指示:

http://msdn.microsoft.com/en-us/WAZPlatformTrainingCourse_ACSAndWindowsPhone7

在浏览器中使用Silverlight应用程序代替Windows手机?我想保留当前的模型,公共和私人数据库,理想情况下将silverlight应用程序插入到天蓝色的社交游戏包中:

https://github.com/WindowsAzure-Toolkits/wa-toolkit-games

使用类似的ACS模式,我需要的方向是关于Oauth2的客户端处理。

提前感谢您对此事的任何帮助。

1 个答案:

答案 0 :(得分:2)

如果它是浏览器内的Silverlight应用程序,为什么不将它视为常规网站?流程将类似于

  1. 用户浏览您的应用
  2. 在发送XAP之前,您的网站会显示身份提供商列表。用户选择一个并重定向以登录。
  3. 用户登录后,您将获得一个发布到您的应用程序的令牌(即社交游戏工具包)。好消息是Social Gaming Toolkit已经在网站上提供了与ACS的集成,因此没有太多工作要做。用户将获得由Windows Identity Foundation生成的cookie,其中包含声明(暂时不涉及Silverlight)。
  4. 现在您发送XAP并加载Silverlight应用
  5. 从现在开始,从XAP到您的应用程序(将具有Social Games Toolkit)的每个请求都将填充Principal,因为WIF cookie是在每个请求中发送的。
  6. 如果您想稍微改变用户体验,而不是在常规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通知端点,这与我上面描述的不同。

    流程类似于

    1. 电话显示登录选项(Facebook,LiveID等)
    2. 用户点击其中一个
    3. 将用户重定向到ACS,然后重定向到所选的身份提供商
    4. 用户登录并将某种令牌发送回ACS(取决于身份提供商)
    5. 此时,ACS将使用一些JavaScript呈现HTML页面。这将指示浏览器(托管在Windows Phone中)发送带有效负载的外部信号(在这种情况下为令牌)。 window.external.Notify('THE_TOKEN');
    6. 手机应用会检测通知并抓取令牌
    7. 我不确定JavaScript通知机制如何在Silverlight浏览器应用程序中运行,因为您已经在浏览器中。但如果你试试,请告诉我们。

      的Matias