C# 从swagger UI将头中的Jwt令牌作为承载令牌传递不起作用
我正在生成jwt令牌web api核心应用程序。在应用程序中,我使用的是swagger和applied Bear token身份验证。但当我尝试从swagger UI传递Bear token时,我收到401错误。请任何人帮助我C# 从swagger UI将头中的Jwt令牌作为承载令牌传递不起作用,c#,authentication,asp.net-web-api,swagger,bearer-token,C#,Authentication,Asp.net Web Api,Swagger,Bearer Token,我正在生成jwt令牌web api核心应用程序。在应用程序中,我使用的是swagger和applied Bear token身份验证。但当我尝试从swagger UI传递Bear token时,我收到401错误。请任何人帮助我 services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
c.SwaggerDoc("v2", new OpenApiInfo { Title = "My API", Version = "v2" });
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
In = ParameterLocation.Header,
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
Type = SecuritySchemeType.ApiKey,
});
});
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Versioned API v1.0");
c.SwaggerEndpoint("/swagger/v2/swagger.json", "Versioned API v2.0");
c.DocExpansion(DocExpansion.None);
});
[
[]您指定了API支持的SecurityScheme,但没有指定它是必需的。因此,swagger不会将其传递到标头中。为此,您需要使用
OpenAPIsecurityRequest
并在其中指定您使用的SecurityDefinition
的Id。下面是我使用过的一个片段
var securityScheme = new OpenApiSecurityScheme()
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.Http,
Scheme = "bearer",
BearerFormat = "JWT" // Optional
};
var securityRequirement = new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "bearerAuth"
}
},
new string[] {}
}
};
options.AddSecurityDefinition("bearerAuth", securityScheme);
options.AddSecurityRequirement(securityRequirement);