【问题标题】:AZURE ACS - Windows Live ID - How do I get the email and name of the authenticated user?AZURE ACS - Windows Live ID - 如何获取经过身份验证的用户的电子邮件和姓名?
【发布时间】:2012-04-16 20:48:33
【问题描述】:

这是场景:

在 AZURE 开发环境中运行的 MVC 3 应用程序 AZURE ACS 中的身份验证实现方式与此处 http://msdn.microsoft.com/en-us/library/hh127794.aspx

中的相同

我正在尝试获取用户名和电子邮件,但我找不到配置“索赔规则”的方法,我会得到一个明文值,而是得到一个看起来像的字符串被加密。 那么我可以以明文形式获取规则的方式来配置规则吗?或者我可以解密返回的值吗? 这是可能的还是我在这里看错了。

谢谢

【问题讨论】:

    标签: asp.net-mvc-3 azure acs


    【解决方案1】:

    IIRC,将用户的姓名或电子邮件地址作为声明发布是违反 Windows Live 隐私政策的(与 Gmail 或 Yahoo! 不同)。因此,无法从 Live 获得这些声明(除非您碰巧是 Microsoft)。

    您可以获得的唯一值称为名称标识符。每个 RP 域都是唯一的(即,它不是每个 LiveID 的单个值,而是因域而异)。这也是故意的,这样您就不能让不同的网站合作跟踪用户。通常,您会获得名称标识符(称为 PUID),然后将其粘贴到数据库中的某个位置,这样您就知道您以前见过它。然后用户在您这边注册姓名、电子邮件等,然后您将其与 PUID 关联起来。

    另一方面,LiveId 还支持 OAuth2,因此您可以从用户那里获得您需要的任何用户个人资料信息(在他/她同意的情况下)。见here

    【讨论】:

    【解决方案2】:

    这是微软方面的总#FAIL。用户在使用 Google 或其他提供商登录您的网站时,必须先接受。然后他们简单地将基本信息传递给站点,站点使用它,每个人都很高兴。

    顺便说一句,您可以使用幕后代码页从用户那里获取它,但它对用户来说不是无缝的,需要手动过程,但是 LiveID 系统在执行此操作时并不更安全,它只是被破坏了。

    【讨论】:

      【解决方案3】:

      可能,但它需要一些自定义 sts 的代码:

      https://gist.github.com/1867792

      不构建代码,也不包含依赖项...但它主要基于移植到 MVC4 的早期 thinktecture 入门站点,并进行了如上所示的更改。

      【讨论】:

        【解决方案4】:

        此博客讨论创建自定义 Windows Live STS 提供程序,然后将其作为受信任的身份提供程序合并到 SharePoint 中。

        http://blogs.technet.com/b/speschka/archive/2012/03/01/finally-a-useful-way-to-federate-with-windows-live-and-sharepoint-2010-using-oauth-and-saml.aspx

        不幸的是,Azure 团队似乎并不理解人们可能希望真正从 windows live id 中获得有用的东西。

        您还可以通过在身份提供程序中单击它来删除作为登录选项的 windows live Id,然后取消选中与您的依赖方的关联。

        (不能选择删除真的很奇怪=P)

        【讨论】:

          【解决方案5】:

          有几种技术可以查询 Live 服务器以获取有关经过身份验证的用户的其他信息(当然前提是他们已同意)。您可以使用一些客户端 javascript 对您的网站进行一些简单的自定义,以获取信息,如下面的示例所示:http://msdn.microsoft.com/en-us/library/live/hh826534.aspx

          也可以从您的服务器端代码查询实时服务器,尽管涉及更多一些。 http://dominicbetts.github.io/waad-acs-sample/index.html 中描述的示例应用程序显示了 MVC4 应用程序中的一种可能方法。

          【讨论】:

            【解决方案6】:

            似乎有一种方法,有点复杂,但是通过成为代理并使用实时连接 API,您可以实现此功能。

            请看:http://code.msdn.microsoft.com/windowsazure/Get-Azure-ACS-work-40d588cc#content

            【讨论】:

            • 不鼓励仅链接的答案,因为 Microsoft 可以更改其链接并导致此答案无效。即使是简单的代码示例或框架也会有所帮助。
            【解决方案7】:

            通过 iFrame Trick 可以实现。

            <iframe src="https://login.live.com/login.srf?wa=wsignout1.0" frameborder="0"></iframe>
            

            这不会将您重定向到 MSN 页面

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-06-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多