.net core swagger身份认证
时间: 2024-12-26 16:18:22 浏览: 8
### .NET Core 使用 Swagger 实现身份认证
在构建 API 接口时,安全性和访问控制至关重要。Swagger 不仅可以用于生成美观易读的 API 文档,还支持通过多种方式实现身份验证和授权功能。
对于需要保护的 API 路径,在 `Startup` 类中的 `ConfigureServices` 方法里注册中间件并指定所需的身份验证方案:
```csharp
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// 配置JWT Bearer Token认证机制
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(o =>
{
o.Authority = "https://localhost:5001";
o.Audience = "apiName";
o.RequireHttpsMetadata = false;
});
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
var securitySchema = new OpenApiSecurityScheme
{
Description = "输入有效的 JWT 访问令牌",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.Http,
Scheme = "bearer",
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
};
c.AddSecurityDefinition("Bearer", securitySchema);
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{securitySchema, new[] {"readAccess", "writeAccess"}}
});
});
}
```
接着是在 `Configure` 函数内应用这些设置来确保请求被适当处理[^1]。
为了使开发者能够方便地测试受保护端点的功能,可以在启动应用程序之前向 Swagger UI 提供必要的 OAuth2 流程参数配置。这允许用户直接从界面获取临时性的访问令牌来进行调试工作[^4]。
最后一步是确保所有敏感数据都经过加密传输,并且只授予特定角色或权限范围内的客户端访问受限资源的能力。可以通过自定义属性 `[Authorize(Roles="Admin")]` 或者更细粒度的方式如 Policy-Based Authorization 来完成这一目标[^2]。
阅读全文