gpt4 book ai didi

c# - 在 Azure AD B2C 中请求 token 时缺少范围 "scp"

转载 作者:行者123 更新时间:2023-12-04 02:28:35 24 4
gpt4 key购买 nike

因此,我尝试使用 Azure AD B2C 保护 Web API,但是当我尝试使用使用“运行用户流”获得的 token 访问终结点时,出现以下异常:

System.UnauthorizedAccessException: IDW10201: Neither scope or rolesclaim was found in the bearer token.

我的代码:

我创建了一个新的 ASP.NET Core 应用程序并使用该对话框自动添加身份验证。

代码中一些有趣的点:

我尝试将以下内容添加到 appsettings.json 文件中,但没有帮助:

"AllowWebApiToBeAuthorizedByACL": true

我尝试将其从 Controller 中删除,但没有帮助:

// The Web API will only accept tokens 1) for users, and 2) having the "access_as_user" scope for this API
static readonly string[] scopeRequiredByApi = new string[] { "access_as_user" };
HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);

在ConfigureServices中我有以下代码:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(Configuration.GetSection("AzureAdB2C"));

Azure 门户:

  1. 我为 Azure AD B2C 创建了一个新租户

  2. 我注册了一个应用程序

applicationcreated

  • API 权限
  • 在这里我已经玩了很多了,这些是我现在启用的权限:

    https://i.ibb.co/DrV7fDv/permissions.png

  • 创建用户流程
  • https://i.ibb.co/sPj2BSK/userFlow.png

    然后,当我运行用户流程时,这就是我得到的:

    使用的链接:

    https://xxxxxxxxxxx001.b2clogin.com/xxxxxxxxx001.onmicrosoft.com/oauth2/v2.0/authorize?

    p=B2C_1_user_flow_test_signinsignup

    &client_id=xxxxxxxxxxxx

    &nonce=defaultNonce

    &redirect_uri=https%3A%2F%2Fjwt.ms

    &scope=openid

    &response_type=id_token

    &prompt=login

    token

    我对 azure 完全陌生,在研究了整个互联网之后,我无法弄清楚这里的问题是什么,以及为什么 scp 不在我从 azure 门户中提供的链接运行用户流时获得的 token 中。

    我非常感谢您对我缺少设置或设置错误的内容提供帮助。

    最佳答案

    您得到的是 id token 。 id token 没有 scp 声明。它仅包含登录用户的信息。您所做的只是登录用户的操作。

    如果您想获得 scp 声明,您应该 request an access token而不是 id token 。

    关于c# - 在 Azure AD B2C 中请求 token 时缺少范围 "scp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65704171/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com