【问题标题】:Swagger with Multiple API Keys具有多个 API 密钥的 Swagger
【发布时间】:2022-01-10 18:22:12
【问题描述】:

我正在开发一个 API ASP.Net Core (net6.0),其中通过请求传入密钥 (X-API-KEY) 和应用程序 ID (X-APP-ID) 来实现身份验证请求标头。

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>()
        }
    });
});

当前的配置结果如下,它实际上可以工作,但是在一个部分中只有一个“授权”和“关闭”按钮和两个文本框会更好。

我希望我只是缺少对配置的调整。非常感谢任何帮助。

【问题讨论】:

    标签: asp.net-core asp.net-web-api swagger-ui openapi swashbuckle.aspnetcore


    【解决方案1】:

    您的配置是正确的。这就是 Swagger UI 当前呈现 API 密钥对的方式。这是一个现有的增强请求:
    https://github.com/swagger-api/swagger-ui/issues/3521

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多