我正在尝试为我的 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 我能找到的所有可能的方法。好像没什么作用