向Swagger

时间:2017-01-19 12:57:22

标签: c# asp.net-web-api swagger-ui api-key swashbuckle

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

0 个答案:

没有答案