我是新手使用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一样添加用户名/密码文本框以防止未经授权的访问 .