如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 记录 API 密钥验证
How to document API Key authentication using Swashbuckle.AspNetCore v5.0.0-rc2
我正在将使用 Swashbuckle 生成的 Swagger 文档的 Web API 从 .NET Framework 迁移到 ASP.NET Core。在新的 AspNetCore 版本中,我使用的是 Swashbuckle.AspNetCore v5.0.0-rc2。
这是一项内部服务,身份验证使用自定义 HTTP header 中提供的 API 密钥。在 .NET Framework 应用程序中,我将 Swashbuckle 配置为启用我的 API 密钥,如下所示:
c.ApiKey("apiKey")
.Description("My description")
.Name("MyHttpHeaderName")
.In("header);
和
c.EnableApiKeySupport("MyHtpHeaderName", "header);
如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 启用对相同 API 密钥的支持?
我通过搜索找到的大部分信息似乎与 v5.0.0-rc2 之前的 Swashbuckle.AspNetCode 版本有关。
此答案适用于 v5.0.0-rc2,但仅涵盖 Bearer Authorization,似乎与使用自定义 HTTP header 无关:
在Swashbuckle.AspNetCore
中,授权设置都是用AddSecurityDefinition
方法处理的。
在 4.x 中,您可以设置一个 ApiKeyScheme
来描述如何使用 API 密钥来授权请求:
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.
中阅读更多相关信息
我正在将使用 Swashbuckle 生成的 Swagger 文档的 Web API 从 .NET Framework 迁移到 ASP.NET Core。在新的 AspNetCore 版本中,我使用的是 Swashbuckle.AspNetCore v5.0.0-rc2。
这是一项内部服务,身份验证使用自定义 HTTP header 中提供的 API 密钥。在 .NET Framework 应用程序中,我将 Swashbuckle 配置为启用我的 API 密钥,如下所示:
c.ApiKey("apiKey")
.Description("My description")
.Name("MyHttpHeaderName")
.In("header);
和
c.EnableApiKeySupport("MyHtpHeaderName", "header);
如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 启用对相同 API 密钥的支持?
我通过搜索找到的大部分信息似乎与 v5.0.0-rc2 之前的 Swashbuckle.AspNetCode 版本有关。
此答案适用于 v5.0.0-rc2,但仅涵盖 Bearer Authorization,似乎与使用自定义 HTTP header 无关:
在Swashbuckle.AspNetCore
中,授权设置都是用AddSecurityDefinition
方法处理的。
在 4.x 中,您可以设置一个 ApiKeyScheme
来描述如何使用 API 密钥来授权请求:
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.
中阅读更多相关信息