我是新手使用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本身的虚张声势?如果是,请显示一个简单的方法来实现它 .
Update #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
But this is not what i want ,我需要像swagger-ui一样添加用户名/密码文本框以防止未经授权的访问 .