我已将 Swagger 集成到我的 ASP.NET Core Web API 项目中,但它只能访问不需要身份验证的端点:
application.UseSwagger();
application.UseSwaggerUI();
我该如何解决这个问题?有没有办法公开身份端点并在那里输入用户凭据?
首先,您应该从身份服务器请求 jwt 令牌。然后,对于受 jwt“承载”身份验证方案保护的 api,您可以像下面这样配置 swagger,以在访问 api 时添加 jwt 令牌。
builder.Services.AddSwaggerGen(option =>
{
option.SwaggerDoc("v1", new OpenApiInfo { Title = "Demo API", Version = "v1" });
option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
In = ParameterLocation.Header,
Description = "Please enter a valid token",
Name = "Authorization",
Type = SecuritySchemeType.Http,
BearerFormat = "JWT",
Scheme = "Bearer"
});
option.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type=ReferenceType.SecurityScheme,
Id="Bearer"
}
},
new string[]{}
}
});
});