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

时间:2011-09-25 21:51:49

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

我正在使用Azure ACS,我一直在寻找远离SAML 2.0响应的电子邮件和名称。

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

我有FormCollection对象的XML,我在xml中看到了Email和Name,但我不知道如何获取它。是否有一个解析器包含在Identity dll中以获取该信息?

2 个答案:

答案 0 :(得分:4)

既然你提到了FormCollection,我假设你是用.Net编写的。那么最简单的事就是使用WIF(http://msdn.microsoft.com/en-us/security/aa570351)。

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

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

您可以使用带有MVC的WIF查看一些示例。一个样本是具有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不会将用户的电子邮件地址作为声明。

答案 1 :(得分:0)

Atacan对于除了一个细节之外的所有内容都是正确的:似乎有 方式从Windows Live获取所需信息,但它与Google,Facebook和Yahoo帐户使用的方式不同。 JavaScript Windows Live API支持获取用户名(link)等信息。

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