如何解决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/
范围。
或者,您可以考虑将访问令牌作为the idp_access_token claim从Microsoft身份提供程序传递到Azure AD B2C注册的客户端。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。