【问题标题】:How to get the email and name from Azure ACS?如何从 Azure ACS 获取电子邮件和名称?
【发布时间】:2011-09-25 21:51:49
【问题描述】:

我正在使用 Azure ACS,并且一直在寻找从 SAML 2.0 响应或其他内容中获取电子邮件和名称的方法。

但我没有看到任何选项,我将用户重定向到 localhost:8000/acc/completesigninup/

我有来自 FormCollection 对象的 XML,我在 xml 中看到了电子邮件和名称,但我不确定如何获取它。 Identity dll 中是否包含解析器来获取该信息?

【问题讨论】:

    标签: asp.net-mvc vb.net azure claims-based-identity acs


    【解决方案1】:

    既然您提到了 FormCollection,我假设您正在使用 .Net 在 Windows 中进行编程。那么最简单的方法就是使用 WIF (http://msdn.microsoft.com/en-us/security/aa570351)。

    这样您就不必解析令牌、验证令牌、设置用户身份,然后创建代表令牌信息的 cookie。

    WIF,一旦您安装和配置它(它的 SDK 附带一个 Visual Studio 扩展来执行此操作),将自动为您完成这些。

    您可以查看一些将 WIF 与 MVC 结合使用的示例。一个示例是带有 MVC3 的 ACS,您可以在以下位置找到:

    http://msdn.microsoft.com/en-us/library/hh127794.aspx

    一旦您在控制器中执行此操作,您就可以访问用户的身份并获取声明值,例如:

    ((IClaimsPrincipal)HttpContext.User).Identity.Claims.FirstOrDefault(c => c.ClaimType == ClaimTypes.Email)
    

    请注意,由于 Windows Live 隐私政策,ACS 中的 Windows Live IDP 不会提供用户的电子邮件地址作为声明。

    【讨论】:

    • Atacan,我的网站用户可以将图像添加到队列中以便稍后查看。我想提取电子邮件的名称,电子邮件将是我数据库中的唯一 ID。我已经在使用 WIF,但没有看到提取姓名和电子邮件的选项。
    • 嗨,J 少校。我已经更新了答案,说明如何从经过身份验证的用户中提取声明值。另请注意,Windows Live 有严格的隐私政策,不会泄露任何用户电子邮件或姓名声明。
    【解决方案2】:

    Atacan 在所有方面都是正确的,但只有一个细节:似乎有一种方法可以从 Windows Live 获取所需信息,但它与用于 Google、Facebook 和 Yahoo 帐户的方法不同。 JavaScript Windows Live API 支持获取用户名 (link) 等信息。

    我没有尝试过这个,所以我不知道还需要什么,但这可能就是你要找的。​​p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多