Azure AD中通过用户ID(对象ID)获取用户名的替代方案咨询
解决Azure AD用户ID解析为用户名的替代方法
以下几种方法可以替代复杂的On-Behalf-Of流程:
认证时直接存储用户名
用户登录后获取的ID令牌中,本身就包含name、preferred_username这类用户名相关字段。在API验证令牌的环节,直接把这些字段和用户对象ID一起存入数据库,后续需要用户名时直接从本地数据库读取即可,完全不用调用Microsoft Graph。
注意:必须严格验证ID令牌的合法性(签名、发行方、受众等),确保这些字段的可信度。用客户端凭据调用Microsoft Graph
放弃On-Behalf-Of流程,给你的API应用注册添加User.ReadBasic.All权限(比User.Read.All权限范围更小,更安全),然后通过客户端凭据流程获取Graph访问令牌,直接调用GET /users/{objectId}接口获取用户名。
这个流程配置简单,只需要应用权限,不需要依赖用户上下文,调用逻辑也更直接。借助内部同步系统查询(限企业内部场景)
如果你的企业有本地AD与Azure AD同步的架构,可以直接从本地AD或者同步后的内部数据库中查询用户ID对应的用户名,这种方式适合已经有内部数据同步链路的场景。
内容的提问来源于stack exchange,提问作者Lev Kostychenko
相关产品推荐
相关产品推荐

