如何从 Azure ACS 获取电子邮件和姓名?

发布于 2024-12-06 13:40:57 字数 227 浏览 0 评论 0原文

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

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

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

I'm using the Azure ACS, and I've been looking for away to get the email and name from the SAML 2.0 response or something.

But I dont see any options for it, I redirect the user to localhost:8000/acc/completesigninup/

There I have the XML from the FormCollection object, I see the Email and Name in the xml but I'm not sure how to get it. Is there a parser that's included in the Identity dll to get that info?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

守护在此方 2024-12-13 13:40:57

既然您提到了 FormCollection,我假设您正在使用 .Net 在 Windows 中进行编程。那么最简单的事情就是使用 WIF (http://msdn.microsoft.com/en-我们/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)

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

Since you are mentioning of FormCollection I assume you are programming in windows with .Net. Then the easiest thing would be using WIF (http://msdn.microsoft.com/en-us/security/aa570351).

This way you don't have to parse the token, validate it, set the User Identity, and then create a cookie representing the information from the token.

WIF, once you install and configure it (its SDK comes with a Visual Studio extension to do this), will do these for you automatically.

You can look at some samples using WIF with MVC. One sample is ACS with MVC3 which you can find at:

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

Once you do this in your controllers you can access to user's identity and get the claim values e.g.:

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

Note that Windows Live IDP in ACS will NOT give out e-mail addresses of users as claims due to Windows Live privacy policy.

辞旧 2024-12-13 13:40:57

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

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

Atacan is correct about everything but one detail: There appears to be a way to get the desired information from Windows Live, but it's different than the way used for Google, Facebook, and Yahoo accounts. The JavaScript Windows Live API includes support for getting information like the user's first name (link).

I haven't tried this, so I don't know what else is required, but that may be what you're looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文