3

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

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

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

4

2 回答 2

4

由于您提到了 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 不会提供用户的电子邮件地址作为声明。

于 2011-09-26T00:08:10.830 回答
0

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

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

于 2012-05-02T23:35:46.983 回答