我正在使用Azure ACS,并且一直在寻找可以从SAML 2.0响应中获取电子邮件和名称的东西。如何从Azure ACS获取电子邮件和名称?
但我没有看到它的任何选择,我将用户重定向到localhost:8000/ACC/completesigninup/
在那里,我已经从的FormCollection对象的XML,我看到在XML中的电子邮件和名称,但我不知道如何得到它。是否有一个解析器包含在Identity DLL中以获取该信息?
我正在使用Azure ACS,并且一直在寻找可以从SAML 2.0响应中获取电子邮件和名称的东西。如何从Azure ACS获取电子邮件和名称?
但我没有看到它的任何选择,我将用户重定向到localhost:8000/ACC/completesigninup/
在那里,我已经从的FormCollection对象的XML,我看到在XML中的电子邮件和名称,但我不知道如何得到它。是否有一个解析器包含在Identity DLL中以获取该信息?
既然你提到了FormCollection,我假设你正在用.Net编程。那么最简单的事情就是使用WIF(http://msdn.microsoft.com/en-us/security/aa570351)。
这样您就不必解析令牌,验证它,设置用户身份,然后创建一个代表来自令牌的信息的cookie。
WIF,一旦您安装并配置它(SDK附带Visual Studio扩展程序来执行此操作),将自动为您执行这些操作。
您可以使用带有MVC的WIF查看一些示例。一个样品是ACS与MVC3,你可以找到在:
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对于除了一个细节以外的所有内容都是正确的:似乎有从Windows Live获取所需信息的方式,但它与Google,Facebook和Yahoo帐户使用的方式不同。 JavaScript Windows Live API支持获取用户的名字等信息(link)。
我还没有试过这个,所以我不知道还有什么需要,但这可能是你在找什么。
Atacan,我的网站用户可以将图像添加到队列以便稍后查看。我想提取一个电子邮件的名称,该电子邮件将是我的数据库中唯一的ID。 我已经使用WIF,但没有看到一个选项提取了名称和电子邮件。 –
Hi J Maj。我已经更新了答案,说明如何从验证的用户提取声明值。另请注意,Windows Live拥有严格的隐私政策,不会泄露任何用户的电子邮件或声称索赔。 – Atacan