相关疑难解决方法(0)

如何设置 Swashbuckle 和 Swagger UI 以使用 Open ID Connect Discovery 进行授权,以便它可以提供正确的承载令牌?

如何设置 Swashbuckle 和 Swagger UI 以使用 Open ID Connect Discovery 进行授权(在我的例子中是 Azure AD)?

到目前为止,这是我的(未完全工作的)SwaggerGen 设置,基于/sf/answers/4630359751/

SwaggerGenOptions c => {
    OpenApiInfo apiInfo = new()  { /* ...snip... */ };
    c.SwaggerDoc("v1", apiInfo);
    IncludeXmlFileForSwagger(c);

    // Defines the Open ID Connect discovery scheme - see also /sf/answers/4630359751/
    OpenApiSecurityScheme mainScheme = new()
    {
        Type = SecuritySchemeType.OpenIdConnect,
        OpenIdConnectUrl = new Uri($"https://login.microsoftonline.com/{myTenantId}/.well-known/openid-configuration"),
    };
    c.AddSecurityDefinition("OpenIdConnect", mainScheme);

    // Adds a reference to the above scheme as required for every API action (we can get more nuanced later) …
Run Code Online (Sandbox Code Playgroud)

c# swagger swagger-ui openid-connect swashbuckle

7
推荐指数
1
解决办法
2842
查看次数

如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 记录 API 密钥身份验证

我正在将具有使用 Swashbuckle 生成的 Swagger 文档的 Web API 从 .NET Framework 迁移到 ASP.NET Core。在新的 AspNetCore 版本中,我使用的是 Swashbuckle.AspNetCore v5.0.0-rc2。

这是一项内部服务,身份验证使用自定义 HTTP 标头中提供的 API 密钥。在 .NET Framework 应用程序中,我将 Swashbuckle 配置为启用我的 API 密钥,如下所示:

c.ApiKey("apiKey")
   .Description("My description")
   .Name("MyHttpHeaderName")
   .In("header);
Run Code Online (Sandbox Code Playgroud)

c.EnableApiKeySupport("MyHtpHeaderName", "header);
Run Code Online (Sandbox Code Playgroud)

如何使用 Swashbuckle.AspNetCore v5.0.0-rc2 启用对相同 API 密钥的支持?

我通过搜索找到的大部分信息似乎与 v5.0.0-rc2 之前的 Swashbuckle.AspNetCode 版本有关。

此答案适用于 v5.0.0-rc2,但仅涵盖承载授权,并且似乎与使用自定义 HTTP 标头无关:https : //stackoverflow.com/a/57872872/13087

swagger swashbuckle asp.net-core

3
推荐指数
1
解决办法
4307
查看次数

NET Core 3.0的JWT身份验证和Swagger

我正在使用.Net core 3.0开发一些Web Api,并希望将其与SwashBuckle.Swagger集成。它工作正常,但是当我添加JWT身份验证时,它无法按我预期的那样工作。为此,我添加了以下代码:

  services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My Web API", Version = "v1" });
            c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
            {
                Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
                Name = "Authorization",
                In = ParameterLocation.Header,
                Type = SecuritySchemeType.ApiKey
            });

        });
Run Code Online (Sandbox Code Playgroud)

添加AddSecurityDefinition功能后,我可以看到“授权”按钮,当我单击它时,会看到以下表单: 在此处输入图片说明

然后输入Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh,完成后authorization: Bearer WhatEverApiKeyIsfgdgdgdg845734987fgdhgiher635kjh,当我从Swagger向Web Api发送请求时,我希望在请求的标头中看到该内容。但是授权未添加到请求标头中。我正在使用SwashBuckle.Swagger(5.0.0-rc3)。请注意,有许多示例可以在.net core 2.0上正常运行,但是Swashbuckle摇摇欲坠的功能在最新版本上已更改,因此我无法使用该示例。

swagger swashbuckle asp.net-core-webapi .net-core-3.0

1
推荐指数
4
解决办法
1815
查看次数