如何将Azure AD OAuth登录用户与本地Active Directory账号匹配
Azure AD OAuth登录用户匹配本地AD用户实现方案
最优解决方案(无需额外配置)
你拿到的Azure AD访问令牌中已经包含了可直接用于匹配的字段:onprem_sid。该字段是Azure AD Connect同步工具将本地AD用户同步至云端时自动携带的属性,取值与本地AD用户的objectSid(安全标识符)完全一致,是官方默认的跨端匹配凭据。
你只需直接提取令牌中的onprem_sid值,到本地AD中查询objectSid属性等于该值的用户即可完成匹配,全程不需要依赖UPN或者云端objectId,准确性100%。
示例中你提供的令牌对应onprem_sid值为:S-1-5-21-4559353447-1638600113-3447510865-117118,直接用该值作为筛选条件查询本地AD即可匹配到对应用户。
备选适用方案
如果特殊场景下令牌未返回onprem_sid字段,可选择以下两种方案:
- 方案一:修改Azure AD应用的声明发布规则,将Azure AD用户属性中的
onPremisesImmutableId加入访问令牌返回值。该属性是本地AD用户objectGUID经过Base64编码后的结果,也是Azure AD Connect同步的核心锚点。你拿到该值后解码为原始GUID,到本地AD匹配objectGUID属性即可。 - 方案二:给你的应用分配Microsoft Graph的用户读取权限,先提取令牌中的
oid(即Azure AD用户objectId),调用Graph接口查询该用户的onPremisesSecurityIdentifier或者onPremisesImmutableId属性,再到本地AD做匹配。
额外说明
你提到的Azure AD objectId无法在本地AD找到对应字段属于正常情况,该ID是云端生成的唯一标识,默认不会同步到本地AD,若有需要可自行配置Azure AD Connect自定义同步规则,将该值同步到本地AD的自定义扩展属性中,但匹配场景下无需做额外改造,上述方案已覆盖需求。
内容的提问来源于stack exchange,提问作者Ace of Spade
相关产品推荐
相关产品推荐

