我应该如何向 swashbuckle 添加身份验证?

How should I add authentication to swashbuckle?

我正在使用 swashbuckle 将 swagger 添加到我的 asp.net mvc web api 项目中。我看到添加 OAuth2 的选项,但我的网站要求 uires wsfederation。我如何请求ui重新验证以使用 wsfederation 查看 swagger ui?

GlobalConfiguration.Configuration
    .EnableSwagger(c =>
    {
        c.SingleApiVersion("v1", "Services");
    })
    .EnableSwaggerUi(c => { });

SwaggerConfig 文件中的身份验证直接链接到记录您的 API,而不是实际的实现,可以这么说。 因此,如果您在 swaggerConfig 中使用以下内容:

 c.OAuth2("oauth2")
                .Description("OAuth2 Implicit Grant")
                .Flow("implicit")
                .AuthorizationUrl("http://petstore.swagger.io/oauth/dialog")
                .Scopes(scopes =>
                {
                    scopes.Add("read:pets", "read your pets");
                    scopes.Add("write:pets", "modify pets in your account");
                });

这将在 swagger json 文件中生成以下安全定义

securityDefinitions:
  petstore_auth:
    type: oauth2
    authorizationUrl: 'http://petstore.swagger.io/oauth/dialog'
    flow: implicit
    scopes:
      'write:pets': modify pets in your account
      'read:pets': read your pets

回答

How can I require authentication to view the swagger ui with wsfederation?

只需在WebApiConfig.cs文件中全局添加身份验证,类似于以下内容(如果您使用的是MessageHandler或Filter)

config.Filters.Add(new WSFederationAuthentication()); 

查看swagger文档直接webapi相关

不过您可能会遇到一些问题,因为 Swagger 获取文档客户端。