C#:虚张声势/虚张声势-将安全方案与;及;
我有一个ASP.NET核心Api,其中一个操作需要使用多个身份验证方案。我试图通过在Swagger UI中显示所有必需的身份验证方案来记录这些操作。 因此,我使用swashback.AspNetCore(5.1.0)库将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
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};