blazor - AzureADB2C GetAccessTokenForUserAsync 错误“请求中提供的范围'user.read'不受支持”
问题描述
我正在尝试创建一个与 Microsoft Graph API(特别是 OneDrive)集成并使用 Azure AD B2C 进行身份验证的 Blazor 应用程序。
我正在使用 Microsoft.Identity.Web 0.3.1-preview
Setup.cs 如下:
public void ConfigureServices(IServiceCollection services)
{
// Configuration to sign-in users with Azure AD B2C
services.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAdB2C")
.EnableTokenAcquisitionToCallDownstreamApi(new string[] { "https://graph.microsoft.com/.default" })
.AddMicrosoftGraph("https://graph.microsoft.com/beta")
.AddInMemoryTokenCaches();
...
然后服务使用 ITokenAcquisition请求令牌,如下所示:
public MyService(ITokenAcquisition tokenAcquisition, IOptions<WebOptions> webOptionValue,
AuthenticationStateProvider AuthenticationStateProvider)
{
string result = await tokenAcquisition.GetAccessTokenForUserAsync(new string[] { "user.read" });
我正在使用 Microsoft 链接帐户进行身份验证,并且可以在 AuthenticationStateProvider 中看到 live.com 声明。
将基本 user.read 传递给 GetAccessTokenForUserAsync 会导致异常“请求中提供的范围 'user.read' 不受支持”。我尝试将范围指定为https://graph.microsoft.com/user.read但这只是返回 null。
任何建议将不胜感激。
解决方案
Azure AD B2C 颁发的令牌旨在供 Azure AD B2C 注册客户端与 Azure AD B2C 注册资源一起使用。
Microsoft Graph API 不是 Azure AD B2C 注册资源,因此https://graph.microsoft.com/
不支持范围。
或者,您可以考虑将访问令牌作为idp_access_token声明从Microsoft 身份提供程序传递到您的 Azure AD B2C 注册客户端。
Microsoft 身份提供者需要一个自定义策略才能通过.
推荐阅读
- amazon-web-services - 配置 AWS Autoscale 以关闭非活动实例
- python - 在 Matplotlib 中将字符串值映射到线型
- python - 绘图前无法对值进行排序
- python - 将加权边缘列表转换为邻接矩阵时出错
- python - 如何在一行中获取所有输入?
- java - 由于 objectMapper.writeValueAsString 的 O/P 格式不正确导致无法识别的字段异常
- bash - 这是在 bash 中获取当前时间的方法吗
- google-apps-script - 无法授予从谷歌电子表格中的孩子帐户运行脚本的访问权限
- mongodb - 尝试从 Spring Boot Docker 容器连接到 mongo Docker 容器时验证 MongoCredential 时出错?
- node.js - Angular 9 Node.js AWS - 添加 import AWS from 'aws-sdk' 后编译错误