使用Entra External Id时非全局管理员遇AADSTS500208及AADSTS500207错误
环境与用户类型
- 租户:预览版Microsoft Entra External Id的Entra Customer(预览版)租户
- 用户类型:
- Advisor:通过直接邀请添加,账号来自旧版Azure AD工作负载租户(企业账号),加入Advisor组,可正常登录应用
- Client:通过应用User Flow注册的本地账号,加入Client组,登录时出现错误
应用信息
- 类型:.NET 8.0 Blazor交互式应用,基于Microsoft.Identity和DownstreamApi开发
初始错误现象(Client账号)
Client账号登录后重定向至/sign-in/oidc时抛出错误,日志内容:
Message contains error: 'invalid_request', error_description: 'AADSTS500208: 该域不是此账号类型的有效登录域。跟踪 ID: <> 关联 ID: <> 时间戳: 2024-05-24 14:54:37Z', error_uri: 'error_uri is null'.
- 隐身窗口测试:登录后返回
/sign-in/oidc,再次访问根URL会被重新导向User Flow,登录状态未持久化
应用配置(Advisor可正常使用)
"AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "33...33", "ClientId": "bb...bb", "EnablePiiLogging": false, // set to true to enable PII // If the app calls downstream APIs "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "<<omitted>>" } ], "SendX5C": false, "AllowWebApiToBeAuthorizedByACL": false, // If the app is a web app: "ResetPasswordPath": "/MicrosoftIdentity/Account/ResetPassword", "ErrorPath": "/MicrosoftIdentity/Account/Error", "WithSpaAuthCode": false, "Scopes": [ "User.ReadBasic.All", "user.read", "email" ] }, // Downstream APIs "DownstreamApis": [ { "ClaimsProvider": { "BaseUrl": "https://my-api.azurewebsites.net/api", "Scopes": [ "api://my-api.azurewebsites.net/88...88/ClaimsProvider.Read" ] } } ]
用户账号信息
- Client账号(登录失败):
用户类型: 成员
创建类型: 本地账号
身份标识: myFakeAccount@example.com - Advisor账号(登录成功):
用户类型: 成员
创建类型: 邀请
身份标识: ExternalAzureAd
本地测试调整(仅Advisor正常)
非全局管理员的本地开发者修改AzureAd配置后,其Advisor账号可正常访问,但部署到Azure后Client账号仍报错:
"AzureAd": { "Authority": "https://33...33.ciamlogin.com/33...33/v2.0", "Instance": "https://33...33.ciamlogin.com/33...33/v2.0", "Domain": "myTenant.onmicrosoft.com", "ClientId": "bb...bb", //... rest of config the same }
Azure应用服务配置
- 应用服务身份验证:已启用
- 访问限制:允许未经过身份验证的请求
- 令牌存储:已启用
身份提供商配置
身份提供商: Microsoft
应用注册: 无法从已注册的应用ID解析应用注册名称
支持的账号类型: 无法从已注册的应用ID解析账号类型信息
应用(客户端)ID: bb...bb
客户端密钥值: 点击编辑密钥值
颁发者URL: https://myTenant.ciamlogin.com
允许的令牌受众: [空]
客户端应用要求: 仅允许来自此应用本身的请求
身份要求: 允许来自任何身份的请求
租户要求: 允许来自特定租户的请求
允许的租户: 33...33
更新后的新问题
根据微软人员建议,修改Entra应用清单中的登录受众:
"signInAudience": "AzureADandPersonalMicrosoftAccount",
按官方文档此配置应允许所有类型账号访问,但现在访问下游API时出现新错误:
AADSTS500207: 该账号类型无法用于访问你尝试访问的资源。
内容的提问来源于stack exchange,提问作者Josh

