OAuth 2.0、Swagger 和 DotNet Core
OAuth 2.0, Swagger and DotNet Core
我正在使用 Auth0 来允许我使用 OAuth 2.0,并编写一个 DotNet Core API 应用程序,一切正常,Auth0 提供了一个很好的使用示例。
但是我在让 Swagger 授权时遇到了麻烦,有人管理过这个吗?如果是的话,怎么做的?
是的,我有过类似的情况,我的项目是在 net core 3 中完成的,也使用 Auth0 并实现了 Swagger。我在 Startup.cs 中的代码如下所示。
//Swagger
services.AddSwaggerGen(c =>
{
// Another options like docs info or xml
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = @"JWT Authorization header using the Bearer scheme.
Enter 'Bearer' [space] and then your token in the text input below.
Example: Bearer adsdflEDc.asdkjhd.aEASDAD",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer"
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
},
Scheme = "oauth2",
Name = "Bearer",
In = ParameterLocation.Header
},
new List<string>()
}
});
});
您只需添加 AddSecurityDefinition 和 AddSecurityRequirement 选项,当您 运行 您的 API 您可以在 Swagger UI 右上角看到一个按钮,当您单击时,您会看到它要求授权令牌,该令牌将应用于所有受保护的端点。
我正在使用 Auth0 来允许我使用 OAuth 2.0,并编写一个 DotNet Core API 应用程序,一切正常,Auth0 提供了一个很好的使用示例。
但是我在让 Swagger 授权时遇到了麻烦,有人管理过这个吗?如果是的话,怎么做的?
是的,我有过类似的情况,我的项目是在 net core 3 中完成的,也使用 Auth0 并实现了 Swagger。我在 Startup.cs 中的代码如下所示。
//Swagger
services.AddSwaggerGen(c =>
{
// Another options like docs info or xml
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = @"JWT Authorization header using the Bearer scheme.
Enter 'Bearer' [space] and then your token in the text input below.
Example: Bearer adsdflEDc.asdkjhd.aEASDAD",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer"
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
},
Scheme = "oauth2",
Name = "Bearer",
In = ParameterLocation.Header
},
new List<string>()
}
});
});
您只需添加 AddSecurityDefinition 和 AddSecurityRequirement 选项,当您 运行 您的 API 您可以在 Swagger UI 右上角看到一个按钮,当您单击时,您会看到它要求授权令牌,该令牌将应用于所有受保护的端点。