ASP.NET 承载身份验证,不适用于 swagger。正在与邮递员合作

问题描述 投票:0回答:0

我正在尝试为我的 ASP.NET Web API 设置身份验证。我已使用 Firebase Google 作为我的身份提供商添加了 jwt 身份验证。 当我尝试通过 swagger ui 进行身份验证时,我可以生成 jwt 令牌,我可以将令牌添加到 swagger ui 中的“授权”按钮,但是当我尝试调用需要身份验证的端点时,我得到 401。 当我向邮递员提出完全相同的请求时,我得到 200,我只是不明白为什么!

我在program.cs中的设置:

Swagger 生成设置:

...
builder.Services.AddSwaggerGen(options =>
{
    options.SwaggerDoc("v1", new OpenApiInfo { Title = "WorkoutBuddy", Version = "v1" });
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        In = ParameterLocation.Header,
        Name = "Authorization",
        Description = "Provide JWT token",
        Type = SecuritySchemeType.Http,
        BearerFormat = "JWT",
        Scheme = "bearer"
    });
    options.AddSecurityRequirement(new OpenApiSecurityRequirement{
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type=ReferenceType.SecurityScheme,
                    Id="Bearer"
                }
            },
            Array.Empty<string>()
        }
    });
});
...

智威汤逊设置:

...
builder.Services
    .AddAuthentication()
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, jwtOptions =>
    {
        jwtOptions.Authority = builder.Configuration["Auth:ValidIssuer"];
        jwtOptions.Audience = builder.Configuration["Auth:Audience"];
        jwtOptions.TokenValidationParameters.ValidIssuer = builder.Configuration["Auth:ValidIssuer"];
    });
...

Swagger UI 设置

...
    app.UseExceptionHandler("/error")
        .UseSwagger()
        .UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint($"/swagger/v1/swagger.json", "WorkoutBuddy Api");
        });

    app.UseCors(options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());

    app.UseHttpsRedirection();

    app.UseAuthentication();
    app.UseAuthorization();

    app.MapControllers();

    app.Run();
...

Swagger UI request - 401

Postman request - 200

尝试配置 swagger ui 我能找到的所有可能的方法。好像没什么作用

authentication swagger asp.net-core-webapi swashbuckle
© www.soinside.com 2019 - 2024. All rights reserved.