0

相信我,我尝试了所有可能的选项,阅读了关于堆栈溢出的所有帖子,没有任何效果。

我正在使用带有 oauth2 的 swagger UI。当我点击执行时,总是得到相同的响应。

带有 401 的错误消息:www-authenticate: Bearer error="invalid_token"error_description="观众 '00000002-0000-0000-c000-000000000000' 无效"

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(BeararAuth)
        .AddMicrosoftIdentityWebApi(Configuration)
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddInMemoryTokenCaches();

    services.AddSwaggerGen(c =>
    {
            c.OperationFilter<AuthorizeCheckOperationFilter>(Configuration["AzureAd:ClientId"]);
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApplication4", Version = "v1" });
            c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
            {
                In = ParameterLocation.Header,
                Type = SecuritySchemeType.OAuth2,
                Flows = new OpenApiOAuthFlows
                {
                    AuthorizationCode = new OpenApiOAuthFlow
                    {
                        AuthorizationUrl = new Uri("https://login.microsoftonline.com/common/oauth2/authorize"),
                        TokenUrl = new Uri("https://login.microsoftonline.com/common/oauth2/token"),
                        Scopes = new Dictionary<string, string>
                        {
                          {"User.Read", "User Read scope"},
                          {"access_as_user", "access APIs as user" },
                          { $"api://{Configuration["AzureAd:ClientId"]}/access_as_user", "Application API Permissions" }
                        }
                    }
                 }
              });
         });
      }

请帮助我。

我可以使用身份验证流程成功登录swagger;生成令牌。

当我将该令牌粘贴到https://jwt.io时,

它向我显示了值为“00000002-0000-0000-c000-000000000000”的 aud。

请帮我弄清楚这个问题。我在 azure ad 端做错了什么,或者后端 api 端缺少什么。

4

0 回答 0