asp.net-core - 如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 记录 API key 身份验证

标签 asp.net-core swagger swashbuckle

我正在将具有使用 Swashbuckle 生成的 Swagger 文档的 Web API 从 .NET Framework 迁移到 ASP.NET Core。在新的 AspNetCore 版本中,我使用的是 Swashbuckle.AspNetCore v5.0.0-rc2。

这是一项内部服务,身份验证使用自定义 HTTP header 中提供的 API key 。在 .NET Framework 应用程序中,我将 Swashbuckle 配置为启用我的 API key ,如下所示:

c.ApiKey("apiKey")
   .Description("My description")
   .Name("MyHttpHeaderName")
   .In("header);


c.EnableApiKeySupport("MyHtpHeaderName", "header);

如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 启用对相同 API key 的支持?

我通过搜索找到的大部分信息似乎与 v5.0.0-rc2 之前的 Swashbuckle.AspNetCode 版本有关。

此答案适用于 v5.0.0-rc2,但仅涵盖承载授权,并且似乎与使用自定义 HTTP header 无关:https://stackoverflow.com/a/57872872/13087

最佳答案

Swashbuckle.AspNetCore , 授权设置都是通过 AddSecurityDefinition 处理的方法。

在 4.x 中,你可以设置一个 ApiKeyScheme描述了如何使用 API key 来授权请求​​:

c.AddSecurityDefinition("ApiKey", new ApiKeyScheme()
{
    Description = "My description",
    Name = "MyHttpHeaderName",
    In = "header",
});

从 5.x 开始,Swashbuckle.AspNetCore不再使用自己的模型,而是依赖于 OpenAPI.NET .这意味着上面的安全定义在 5.x 中看起来像这样:
c.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme()
{
    Type = SecuritySchemeType.ApiKey,
    In = ParameterLocation.Header,
    Name = "MyHttpHeaderName",
    Description = "My description",
});

请注意,您还必须设置安全要求以配置哪些操作需要哪些安全定义。在 5.x 中,其语法如下所示:
c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
    {
        new OpenApiSecurityScheme
        {
            Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "ApiKey" }
        },
        new string[] { }
    }
});

您可以在 documentation on security definitions and requirements 中阅读更多关于这一切的信息。 .

关于asp.net-core - 如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 记录 API key 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57943550/

相关文章:

soapui - 将 swagger 定义导入 SoapUI 社区版?

Swagger:从枚举中获取一个或多个值

java - 如何在 Swagger Open API 3.0 规范中定义电子邮件格式?

c# - ASP.NET Core - Swashbuckle 未创建 swagger.json 文件

asp.net-core - 如何在 Swagger UI 的 multipart/form-data 中的 json 参数中显示架构?

c# - Azure Web应用程序Asp.NET Core 2错误: An error occurred while starting the application

c# - 访问 ASP.NET Core 中的配置选项 : options pattern

asp.net-core - 自托管 ASP.NET Core 应用程序不适用于 SSL

swagger - 如何在 Swagger 文档中显示 <remarks>

c# - 授权 token 未在 ASP.NET Core 中绑定(bind)