如何使端点在 AND 基础上需要多个安全定义?

How to make an endpoint require on an AND basis multiple security definitions?

想象一下,有一个端点需要访问令牌和请求形式的 api 密钥 header。

目前我已经概述了端点的两个安全定义,但是 UI 在“或”的基础上识别它们 - 这意味着如果两者中的任何一个被填充,它就很好。

我想将其更改为基于 AND 的方式,以便当有问题的端点需要这两个授权时 - 两者都需要定义才能工作。

谢谢!

不要声明两个单独的 OpenApiSecurityRequirement 对象,只需声明一个对象,然后在字典中 - 包括两个证券。

例如:

operation.Security = new List<OpenApiSecurityRequirement>
{
    new OpenApiSecurityRequirement
    {
        [ apiKeyScheme ] = Array.Empty<string>(),
        [ bearerTokenScheme ]  = Array.Empty<string>()
    }
};

(其中的任何键值对都是在AND的基础上应用的), 而不是

operation.Security = new List<OpenApiSecurityRequirement>
{
    new OpenApiSecurityRequirement
    {
        [ apiKeyScheme ] = Array.Empty<string>()
    },
    new OpenApiSecurityRequirement
    {
        [ bearerTokenScheme ]  = Array.Empty<string>()
    }
};

基本上,单独的要求是通过 OR 子句应用的,而要求本身通过 AND 子句应用其中的证券。