默认映射Identity.Name的ADFS声明是哪一个?及ADFS映射User.Identity.Name变更问询
ADFS 相关问题解答
1. 默认情况下,哪一个ADFS声明会映射到Identity.Name?
默认情况下,ADFS 会将 Name 声明(通常对应 LDAP 属性 displayName)映射到 User.Identity.Name。但这里有个关键前提:ADFS 需要在出站声明规则中配置好这个映射关系,否则ASP.NET应用将无法正常获取到该值。
2. ADFS近期是否在ASP.NET中变更了UPN映射至User.Identity.Name的方式?
从你的测试场景来看,确实存在实际行为的隐性变化——之前你的ASP.NET应用在未配置ADFS出站Name声明时,User.Identity.Name能正常获取到值(推测当时ADFS默认fallback到了UPN),但重启ADFS测试环境后,这个默认映射失效了,出现Request.IsAuthenticated为true但User.Identity.Name为空的情况,根源就是缺少Name声明,且web.config中没有显式配置UPN的映射规则。
按照ADFS Web Agent的处理逻辑,它是依赖令牌中的声明来填充User.Identity相关字段的。早期环境中,ADFS可能会在未配置Name声明时自动用UPN作为默认值,但现在这个 fallback 行为不再生效,必须明确配置ADFS的出站Name声明规则,或者在web.config中通过<claimsAuthenticationManager>等方式显式指定将UPN映射到Name标识。
简单总结:目前没有公开的官方变更通知,但实际行为上,ADFS不再默认把UPN映射到User.Identity.Name,必须通过显式配置来实现这个映射。
内容的提问来源于stack exchange,提问作者nothingisnecessary
相关产品推荐
相关产品推荐

