Azure自定义Claim:如何区分Web应用内外部用户?
解决JWT自定义Claim区分内部/外部用户的问题
正确的源属性选择
要区分Azure AD中的内部用户与Guest(外部)用户,推荐使用以下几个可靠的源属性:
user.isguest:最直接的属性,取值为布尔值True(对应Guest用户)或False(对应内部用户)。在自定义Claim配置时选择该属性,解码后的JWT会包含明确的布尔值,用于快速判断用户类型。user.creationtype:Guest用户的该属性值固定为Invitation,内部用户的属性值通常为空或LocalAccount,可作为辅助判断依据。user.userprincipalname:Guest用户的用户主体名称(UPN)会带有#EXT#后缀,例如external_user_contoso.com#EXT#@yourtenant.onmicrosoft.com,也能用来区分用户类型。
为什么user.usertype不符合预期
你之前选用的user.usertype并非用于区分内部/Guest用户的属性,它的作用是标识用户的管理来源:
UserTypeCloudManaged表示该用户是Azure AD直接创建的内部用户- 如果是从本地AD同步过来的用户,该属性值会是
UserTypeOnPremisesSync
因此这个属性无法满足你区分内部与外部用户的需求。
内容的提问来源于stack exchange,提问作者Georgios
相关产品推荐
相关产品推荐

