使用多个 API 键大摇大摆
Swagger with Multiple API Keys
我正在开发一个 API ASP.Net 核心 (net6.0),其中将通过请求密钥 (X-API-KEY) 和应用程序 ID (X-APP-ID) 在请求中传递 header.
这在 https://swagger.io/docs/specification/authentication/api-keys/
的“多个 API 键”部分进行了描述
我在 Program.cs 中配置它的代码可以在下面找到。
builder.Services.AddSwaggerGen(c =>
{
c.AddSecurityDefinition("apiKey", new OpenApiSecurityScheme()
{
Description = "API KEY",
Name = "X-API-KEY",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityDefinition("appId", new OpenApiSecurityScheme()
{
Description = "APP ID",
Name = "X-APP-ID",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "apiKey"
}
},
Array.Empty<string>()
},
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "appId"
}
},
Array.Empty<string>()
}
});
});
当前配置导致下面的结果实际有效,但是在一个部分中只有一个带有两个文本框的“授权”和“关闭”按钮会更好。
我希望我只是错过了配置中的一个调整。非常感谢任何帮助。
您的配置正确。这就是 Swagger UI 当前呈现 API 密钥对的方式。这是现有的增强请求:
https://github.com/swagger-api/swagger-ui/issues/3521
我正在开发一个 API ASP.Net 核心 (net6.0),其中将通过请求密钥 (X-API-KEY) 和应用程序 ID (X-APP-ID) 在请求中传递 header.
这在 https://swagger.io/docs/specification/authentication/api-keys/
的“多个 API 键”部分进行了描述我在 Program.cs 中配置它的代码可以在下面找到。
builder.Services.AddSwaggerGen(c =>
{
c.AddSecurityDefinition("apiKey", new OpenApiSecurityScheme()
{
Description = "API KEY",
Name = "X-API-KEY",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityDefinition("appId", new OpenApiSecurityScheme()
{
Description = "APP ID",
Name = "X-APP-ID",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "apiKey"
}
},
Array.Empty<string>()
},
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "appId"
}
},
Array.Empty<string>()
}
});
});
当前配置导致下面的结果实际有效,但是在一个部分中只有一个带有两个文本框的“授权”和“关闭”按钮会更好。
我希望我只是错过了配置中的一个调整。非常感谢任何帮助。
您的配置正确。这就是 Swagger UI 当前呈现 API 密钥对的方式。这是现有的增强请求:
https://github.com/swagger-api/swagger-ui/issues/3521