Azure身份验证:无法添加On-premises SAM账户名令牌声明的问题
在Azure AD令牌中添加“On-premises SAM Account Name”声明的解决方案
一、当前配置的问题分析
你之前的配置存在两处关键错误:
- 可选声明的
source字段未指定为user:onPremisesSamAccountName是Azure AD用户对象的内置同步属性,必须明确指定source: "user",Azure AD才会从用户对象中提取该属性。 - 错误尝试使用
extension_xxxx格式:该格式仅适用于自定义扩展属性,而onPremisesSamAccountName是AD同步过来的内置属性,无需此格式。
acceptMappedClaims设为true的操作是正确的,但对于内置属性来说并非必须,保留也不会影响配置效果。
二、正确的配置步骤
确认属性同步有效性
让管理员在Azure AD门户中检查目标用户的属性详情,确认onPremisesSamAccountName字段已存在且有值(该属性会显示在用户“属性”面板的“目录同步属性”区域)。修正应用Manifest的可选声明配置
在应用Manifest中更新optionalClaims节点,针对你需要的令牌类型(accessToken或idToken)添加正确配置:"optionalClaims": { "accessToken": [ { "name": "onPremisesSamAccountName", "source": "user", "essential": false, "additionalProperties": [] } ], // 如果需要在ID令牌中也包含该声明,添加以下配置 "idToken": [ { "name": "onPremisesSamAccountName", "source": "user", "essential": false, "additionalProperties": [] } ] }验证令牌内容
通过你的Angular应用获取令牌后,使用jwt.ms工具解析令牌,检查是否包含onPremisesSamAccountName声明。如果仍未出现,可让管理员检查应用的API权限是否包含User.Read(默认权限通常已包含,若权限不足需补充)。
内容的提问来源于stack exchange,提问作者Sampath
相关产品推荐
相关产品推荐

