Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何使用Swashback.AspNetCore v5.0.0-rc2记录API密钥身份验证_Asp.net Core_Swagger_Swashbuckle - Fatal编程技术网

Asp.net core 如何使用Swashback.AspNetCore v5.0.0-rc2记录API密钥身份验证

Asp.net core 如何使用Swashback.AspNetCore v5.0.0-rc2记录API密钥身份验证,asp.net-core,swagger,swashbuckle,Asp.net Core,Swagger,Swashbuckle,我正在将一个Web API从.NET Framework迁移到ASP.NET Core,该API使用Swashback生成了Swagger文档。在新的AspNetCore版本中,我使用的是swashback.AspNetCore v5.0.0-rc2 这是一个内部服务,身份验证使用自定义HTTP头中提供的API密钥。在.NET Framework应用程序中,我将Swashback配置为启用API密钥,如下所示: c.ApiKey("apiKey") .Description("My des

我正在将一个Web API从.NET Framework迁移到ASP.NET Core,该API使用Swashback生成了Swagger文档。在新的AspNetCore版本中,我使用的是swashback.AspNetCore v5.0.0-rc2

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

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

如何使用Swashback.AspNetCore v5.0.0-rc2启用对同一API密钥的支持

我通过搜索找到的许多信息似乎与v5.0.0-rc2之前的Swashback.AspNetCode版本有关


此答案适用于v5.0.0-rc2,但仅涵盖承载授权,似乎与使用自定义HTTP头无关:

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

在4.x中,您可以设置一个描述如何使用API密钥授权请求的
ApiKeyScheme

c.AddSecurityDefinition("ApiKey", new ApiKeyScheme()
{
    Description = "My description",
    Name = "MyHttpHeaderName",
    In = "header",
});
从5.x开始,
Swashback.AspNetCore
不再使用自己的模型,而是依赖于。这意味着上述安全性定义在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[] { }
    }
});
你可以阅读更多关于这一切的文章

c.AddSecurityRequirement(new OpenApiSecurityRequirement
{
    {
        new OpenApiSecurityScheme
        {
            Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "ApiKey" }
        },
        new string[] { }
    }
});