Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
C#:虚张声势/虚张声势-将安全方案与;及;_C#_Asp.net Core_Swagger Ui_Swashbuckle.aspnetcore - Fatal编程技术网

C#:虚张声势/虚张声势-将安全方案与;及;

C#:虚张声势/虚张声势-将安全方案与;及;,c#,asp.net-core,swagger-ui,swashbuckle.aspnetcore,C#,Asp.net Core,Swagger Ui,Swashbuckle.aspnetcore,我有一个ASP.NET核心Api,其中一个操作需要使用多个身份验证方案。我试图通过在Swagger UI中显示所有必需的身份验证方案来记录这些操作。 因此,我使用swashback.AspNetCore(5.1.0)库将OpenApiSecurityRequirement动态添加到IOperationFilter中的OpenApiOperation: if (authorizeAttributes.Any(x => x.AuthenticationSchemes.Contains(Inte

我有一个ASP.NET核心Api,其中一个操作需要使用多个身份验证方案。我试图通过在Swagger UI中显示所有必需的身份验证方案来记录这些操作。 因此,我使用swashback.AspNetCore(5.1.0)库将
OpenApiSecurityRequirement
动态添加到
IOperationFilter
中的
OpenApiOperation

if (authorizeAttributes.Any(x => x.AuthenticationSchemes.Contains(InternalControllerBasicAuthentication.AuthenticationScheme)))
{
       requirements.Add(new OpenApiSecurityRequirement
       {
             {
                   new OpenApiSecurityScheme {
                        Reference = new OpenApiReference {
                            Type = ReferenceType.SecurityScheme,
                            Id = "credentials"
                        }
                   },
                   new [] { "Basic <credentials-value>" }
             }
      });
} 

if (authorizeAttributes.Any(x => x.AuthenticationSchemes.Contains(OneTimePasswordAuthentication.AuthenticationScheme)))
{
      requirements.Add(new OpenApiSecurityRequirement
      {
             {
                   new OpenApiSecurityScheme {
                        Reference = new OpenApiReference {
                            Type = ReferenceType.SecurityScheme,
                            Id = "one-time-password"
                        }
                   },
                   new [] { "Basic <one-time-password-value>" }
             }
      });
}

operation.Security = new List<OpenApiSecurityRequirement>(requirements);
除了在UI中使用
连接器招摇过市外,一切正常:

是否有办法使用
连接器配置Swagger


任何帮助都将不胜感激

有必要将所有
OpenApiSecurityScheme
对象放入一个
OpenApiSecurityRequirement
中,而不是为每个
OpenApiSecurityScheme
添加
OpenApiSecurityRequirement

将安全要求与连接:

var requirements = new List<OpenApiSecurityRequirement>();
requirements.Add(new OpenApiSecurityRequirement
{
    {
        new OpenApiSecurityScheme {
            Reference = new OpenApiReference {
                Type = ReferenceType.SecurityScheme,
                Id = "scheme-1"
            }
        },
        new [] { "scheme-1-value" }
    }
});

requirements.Add(new OpenApiSecurityRequirement
{
    {
        new OpenApiSecurityScheme {
            Reference = new OpenApiReference {
                Type = ReferenceType.SecurityScheme,
                Id = "scheme-2"
            }
        },
        new [] { "scheme-2-value" }
    }
});

operation.Security = new List<OpenApiSecurityRequirement>(requirements);
var requirement = new OpenApiSecurityRequirement();
requirement.Add(new OpenApiSecurityScheme {
        Reference = new OpenApiReference {
            Type = ReferenceType.SecurityScheme,
            Id = "scheme-1"
        }
    },
    new [] { "scheme-1-value" }
);

requirement.Add(new OpenApiSecurityScheme {
        Reference = new OpenApiReference {
            Type = ReferenceType.SecurityScheme,
            Id = "scheme-2"
        }
    },
    new [] { "scheme-2-value" }
);

operation.Security = new List<OpenApiSecurityRequirement> { requirement };
var需求=新列表();
要求。添加(新的OpenApiSecurityRequirement
{
{
新的OpenApiSecurityScheme{
Reference=新的OpenApiReference{
Type=ReferenceType.SecurityScheme,
Id=“方案-1”
}
},
新[]{“scheme-1-value”}
}
});
要求。添加(新的OpenApiSecurityRequirement
{
{
新的OpenApiSecurityScheme{
Reference=新的OpenApiReference{
Type=ReferenceType.SecurityScheme,
Id=“方案-2”
}
},
新[]{“scheme-2-value”}
}
});
操作安全=新列表(要求);
将安全要求与连接:

var requirements = new List<OpenApiSecurityRequirement>();
requirements.Add(new OpenApiSecurityRequirement
{
    {
        new OpenApiSecurityScheme {
            Reference = new OpenApiReference {
                Type = ReferenceType.SecurityScheme,
                Id = "scheme-1"
            }
        },
        new [] { "scheme-1-value" }
    }
});

requirements.Add(new OpenApiSecurityRequirement
{
    {
        new OpenApiSecurityScheme {
            Reference = new OpenApiReference {
                Type = ReferenceType.SecurityScheme,
                Id = "scheme-2"
            }
        },
        new [] { "scheme-2-value" }
    }
});

operation.Security = new List<OpenApiSecurityRequirement>(requirements);
var requirement = new OpenApiSecurityRequirement();
requirement.Add(new OpenApiSecurityScheme {
        Reference = new OpenApiReference {
            Type = ReferenceType.SecurityScheme,
            Id = "scheme-1"
        }
    },
    new [] { "scheme-1-value" }
);

requirement.Add(new OpenApiSecurityScheme {
        Reference = new OpenApiReference {
            Type = ReferenceType.SecurityScheme,
            Id = "scheme-2"
        }
    },
    new [] { "scheme-2-value" }
);

operation.Security = new List<OpenApiSecurityRequirement> { requirement };
var需求=新的OpenApiSecurityRequirement();
要求.添加(新的OpenApiSecurityScheme){
Reference=新的OpenApiReference{
Type=ReferenceType.SecurityScheme,
Id=“方案-1”
}
},
新[]{“scheme-1-value”}
);
要求.添加(新的OpenApiSecurityScheme){
Reference=新的OpenApiReference{
Type=ReferenceType.SecurityScheme,
Id=“方案-2”
}
},
新[]{“scheme-2-value”}
);
operation.Security=新列表{requirement};