使用Microsoft Graph REST API v1.0访问Azure B2C租户用户遇错求助
解决Azure AD B2C应用的
unsupported_response_type错误并获取用户信息 先搞定你遇到的AADSTS700054错误,这个问题根源是Azure AD B2C应用的配置逻辑和普通AAD应用不一样,再加上原示例代码没适配B2C的规则,咱们一步步来:
1. 修复unsupported_response_type错误
调整Azure B2C应用的身份验证配置
- 登录Azure门户,找到你的B2C租户,进入应用注册里的目标应用
- 切换到身份验证页面,在平台配置下找到你添加的Web平台(如果没有就新建一个)
- 确保在允许的令牌类型里勾选了ID令牌(用于隐式混合流);如果你的场景需要授权码流(更安全),还要额外勾选访问令牌
- 确认回复URL和你项目里配置的完全一致,比如
https://localhost:xxxx/signin-oidc
修改项目配置适配B2C
原示例是为Azure AD设计的,换成B2C需要调整appsettings.json和代码细节:
- 在
appsettings.json里,把Authority改成B2C的策略端点,格式如下:"Authority": "https://{你的B2C租户名}.b2clogin.com/{你的B2C租户名}.onmicrosoft.com/{你的注册登录策略名}/v2.0/" - 调整
ResponseType:如果用隐式流可以设为id_token,更推荐用授权码流(安全度更高),设为code id_token - 确认
ClientId和ClientSecret是你B2C应用的对应值,别和AAD应用的搞混
2. 获取Azure B2C用户信息(包括Gmail等外部账号)
要获取B2C用户数据,需要通过Microsoft Graph API调用,步骤如下:
配置应用权限
- 在你的B2C应用注册页面,切换到API权限
- 点击添加权限 -> 选择Microsoft Graph -> 选择应用权限
- 添加
User.Read.All(只读用户基本信息)或者Directory.Read.All(权限更大,可读取目录级数据)权限 - 点击授予管理员同意(必须操作,因为是应用级权限,不需要用户手动授权)
在代码中调用Graph API获取用户
你可以用Microsoft Graph SDK简化调用流程:
- 安装必要的NuGet包:
Install-Package Microsoft.Graph和Install-Package Microsoft.Graph.Auth - 使用客户端凭据流获取访问令牌,然后调用用户列表接口:
var scopes = new[] { "https://graph.microsoft.com/.default" }; var clientSecretCredential = new ClientSecretCredential( "{你的B2C租户ID}", "{你的应用ClientId}", "{你的应用ClientSecret}", new ClientSecretCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzureCloud }); var graphClient = new GraphServiceClient(clientSecretCredential, scopes); var users = await graphClient.Users.Request().GetAsync(); // 遍历用户,提取外部身份信息(比如Gmail账号) foreach (var user in users) { // B2C用户的外部身份存放在Identities属性中 var externalIdentities = user.Identities?.Where(i => i.SignInType != "userPrincipalName"); foreach (var identity in externalIdentities) { Console.WriteLine($"外部登录账号:{identity.IssuerAssignedId},来源平台:{identity.Issuer}"); } }
关键注意事项
- B2C外部用户的
userPrincipalName可能不是常规邮箱格式,所以必须通过Identities属性获取他们的实际登录账号(比如Gmail地址) - 确保你的B2C租户允许应用通过Graph API访问用户数据,部分租户可能需要额外开启目录访问权限
内容的提问来源于stack exchange,提问作者Gemini
相关产品推荐
相关产品推荐

