Параметр аудитории отсутствует в токене носителя при использовании Swagger (swashbuckle v5.3.1) с Asp. net Core 3.1.1. - PullRequest
0 голосов
/ 15 апреля 2020

Раздел аутентификации Jwt из Startup.cs:

 services.AddAuthentication(options =>
        {
            options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(options =>
        {
            options.Authority = config["Authority"];
            options.RequireHttpsMetadata = Convert.ToBoolean(config["RequireHttpsMetadata"]);
            options.Authority = config["Authority"];
            options.Audience = config["Audience"];
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidAudience = config["Audience"],
                ValidateAudience = Convert.ToBoolean(config["ValidateAudience"]),
                ValidateIssuer = Convert.ToBoolean(config["ValidateIssuer"]),
            };
        });

Конфигурация Swagger:

services.AddSwaggerGen(setup => {
        setup.SwaggerDoc("1.0", new OpenApiInfo
            {
                Title = "Switchboard Live Cloud API v1.0",
                Version = "1.0",
                Description = "Programmable access to Switchboard Live's Cloud Platform.",
            });

        setup.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
        {
            Type = SecuritySchemeType.OAuth2,
            Flows = new OpenApiOAuthFlows 
            { 
                Implicit = new OpenApiOAuthFlow 
                {
                    AuthorizationUrl = new System.Uri(string.Format("{0}/connect/authorize", authority)),
                    Scopes = new Dictionary<string, string> {
                        { "read", "R" },
                        { "write", "W" }
                    }
                } 
            }
        });

        setup.AddSecurityRequirement(new OpenApiSecurityRequirement()
        {
            {
                 new OpenApiSecurityScheme
                {
                    Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "oauth2" }
                },
                new[] { "read", "write" }
            }
            });
.....

 app.UseSwagger();
    app.UseSwaggerUI(setup => {
        setup.SwaggerEndpoint("/swagger/1.0/swagger.json", "Title");
        setup.RoutePrefix = string.Empty;
    });

Я не вижу, что я делаю не так, но когда я запускаю приложение , проверьте области и go в процессе авторизации, я получаю токен на предъявителя, в котором НЕ зашифровано поле аудитории, поэтому все мои запросы заканчиваются ответом 401 Unauthorized и следующая ошибка заголовка:

www-authenticate: Bearer error="invalid_token", error_description="The audience 'empty' is invalid" 

Какие-либо предложения / решения для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...