AAD访问令牌groups声明出现未知GUID的原因咨询
问题分析与解决思路
那个始终出现在groups声明里的未知GUID,其实是Azure AD里一个隐藏的"默认访问(Default Access)"组的对象ID——这个组是Azure AD自动为每个租户创建的,默认包含所有用户,但它不会在Azure Portal、az ad group list这类常规管理工具中显示,所以你查不到它的存在。
为什么会出现这个组?
当你的应用请求了groups声明(MSAL默认会包含这个声明,或者你在应用注册的「令牌配置」里开启了组声明),而用户没有加入任何你手动创建的安全组/Office 365组时,Azure AD就会自动把这个隐藏的默认组塞进groups声明里,作为用户的默认归属。
怎么验证我的猜想?
你可以用Microsoft Graph API快速确认这个GUID的身份:
- 先用Azure CLI拿一个Graph API的访问令牌:
az account get-access-token --resource https://graph.microsoft.com - 复制返回的
accessToken,然后调用Graph的组查询接口:
你会看到返回结果里这个组的GET https://graph.microsoft.com/v1.0/groups/2cb3a5e8-4606-4407-9a97-616246393b5ddisplayName就是Default Access,描述一般是Default access group for all users。
如果不想让它出现在令牌里怎么办?
要是这个默认组对你的业务逻辑没用,可以这么处理:
- 登录Azure Portal,找到你的应用注册,进入「令牌配置」页面,编辑组声明的设置:要么选择只返回「安全组」或「Office 365组」,要么勾选「排除默认访问组」选项(如果你的租户支持的话)。
- 或者,在代码里处理令牌时直接忽略这个特定的GUID就行,它本身不会影响任何权限判断。
另外,你也可以顺手验证下这个GUID是不是用户自己的ObjectID(虽然概率不高):运行az ad user show --upn jurjen@stupendous.org --query objectId,对比下返回值和令牌里的GUID是否一致。要是一致,那就是Azure AD的旧版行为——当用户无组归属时,会把用户自身ID放进groups声明里,但现在更多是返回默认访问组。
内容的提问来源于stack exchange,提问作者Jurjen
相关产品推荐
相关产品推荐

