OAuth 2.0、Swagger 和 DotNet 核心
Posted
技术标签:
【中文标题】OAuth 2.0、Swagger 和 DotNet 核心【英文标题】:OAuth 2.0, Swagger and DotNet Core 【发布时间】:2020-11-30 01:31:06 【问题描述】:我使用 Auth0 来允许我使用 OAuth 2.0,并编写一个 DotNet Core API 应用程序,一切正常,Auth0 提供了一个很好的使用示例。
然而,我在让 Swagger 授权时遇到了麻烦,有人管理过这个,如果是这样,怎么办?
【问题讨论】:
【参考方案1】:是的,我也遇到过类似的情况,我的项目是在 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 中看到右上角的按钮,然后单击您将看到它请求授权令牌,该令牌将应用于所有受保护的端点。
【讨论】:
以上是关于OAuth 2.0、Swagger 和 DotNet 核心的主要内容,如果未能解决你的问题,请参考以下文章
[第二篇]如何在ASP.Net Core的生产环境中使用OAuth保护swagger ui
使用 Swagger 在 ASP.NET Core 中实现 OAuth
Springboot Oauth2 集成Swagger2权限验证实战