最近ADFS是否更改了upn
如何映射到ASP.NET中的User.Identity.Name
?
我所知道的:
Name
声明User.Identity.Name
为null
Request.IsAuthenticated
仍为true
Name
声明,并且web.config中似乎没有显式映射可以使用upn
来实现此目的来自Microsoft:
https://msdn.microsoft.com/en-us/library/mt740689(v=vs.85).aspx
将有效的安全令牌传递给AD FS Web代理时 创建会话cookie并将令牌的声明处理到 会话的用户对象。该对象源自IPrincipal,和 公开一个方法,IsInRole(),您可以使用它来查询用户和 确定该用户是否断言指定的角色声明(使用 用于指定角色的字符串。)
IPrincipal还公开了一个属性,即返回的属性 用户的身份,表示为IIdentity对象。这个对象可以 default.aspx页面用于确定用户是否 经过身份验证(通过调用IsAuthenticated()。它也允许您 通过访问来确定用户是否声明了名称声明 Name属性,返回表示用户名的字符串。 这里的片段说明了这两种技术的使用。
我对此有疑问,我在Microsoft文档中找不到:
upn
用于此,并且正在使用过去)User.Identity.Name
的确切逻辑是什么?答案 0 :(得分:1)
AFAIK,这个“名称”逻辑在最新版本的框架中没有改变。
正如here所解释的那样,默认情况下,用于填充Identity.Name
属性的声明类型始终为:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
因此,如果您的SAML令牌包含此类声明,则它将用作用户的“名称”(由您决定要在此声明中添加哪个AD属性:userPrincipalName,displayName,mail ,. ..)。
可以在代码或web.config中覆盖此默认属性。 This page提到了一个“<nameClaimType />
”元素,说实话,我不记得它是否在此期间发生了变化。
一个
注意:您的链接真的很旧。 “ADFS Web Agent”来自ADFS的第一个版本,但它被WIF迅速取代。