我不习惯使用swagger作为我的UI来测试和调试并显示我的Web API项目的文档。
在最近的一个项目(类型:ASP.NET Web API)中我遇到了一个问题, 我的API没有任何安全性,因为它的界面对任何人都不清楚。 但是我需要保护昂首阔步的用户界面,因为每个人都可以通过在api的网址后添加“Swagger”来访问我的完整文档!!
由于我通过开箱即用的swashbulckle nuget-package轻松添加了招摇,我不知道如何添加任何类型的安全性。如果有任何身体可以一步一步走过,我会非常感激。
还有一件事是我尝试将以下行添加到SwaggerConfig.cs
,但它没有强制执行任何特殊的api-key,我只需在浏览器中输入类似http://localhost:4505/swagger
的内容即可打开swagger ui:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.ApiKey("key-11111-0000-1111-test")
.Description("API Key Authentication")
.Name("apiKey")
.In("header");
c.EnableApiKeySupport("apiKey", "header");
});
(请注意,我省略了与上述代码块中的问题无关的配置)
我是否需要将api-key安全性应用于api本身的swagger?如果是,请显示一个简单的方法来实现它。
更新#1:
我只是通过更改swagger-ui的地址找到了一个黑客。
只需将此行添加到SwaggerConfig.cs
:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
//a long list of auto generated stuff
//don't touch them if you don't know how to change them
})
//next line is what you add
.EnableSwaggerUi("sandbox-passphrase-000000-passphrase2/swagger/{*assetPath}");
然后,Swagger-ui的访问链接将如下所示:
http://your-api.com:port/sandbox-passphrase-000000-passphrase2/swagger/index
但这不是我想要的,我需要像swagger-ui一样添加用户名/密码文本框以防止未经授权的访问。