SajjadZare Ответов: 1

Получаю ошибку 401 авторизации с чванством, но работает должным образом в почтальона (точка продажи основных)


Я добавляю swagger в свой проект и использую авторизацию. Она работает почтальоном, но когда хочу использовать с развязностью сделать 401 без документов

Что я уже пробовал:

public void ConfigureServices(IServiceCollection services)
{
   ...
    services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "APIs", Version = "v1" });
                
                c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    In = ParameterLocation.Header,
                    Name = "Authorization",
                    Type = SecuritySchemeType.ApiKey,
                });

                c.AddSecurityRequirement(new OpenApiSecurityRequirement
                {
                     {
                        new OpenApiSecurityScheme
                        {
                            Name = "Token",
                            Type = SecuritySchemeType.ApiKey,
                            In = ParameterLocation.Header,
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id = "Token",
                            },
                        },
                        Array.Empty<string>()
                     }
                });
            });
           ...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IUnitOfWork uow)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            //########################################## Swagger
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "APIs");
            });
            //##########################################

            app.UseHttpsRedirection();

            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
            ....
}

1 Ответов

Рейтинг:
2

Sandeep Mewara

Я не вижу, где вы устанавливаете токен на предъявителя в своем коде. Однако вы определяете, что он будет.

Я бы предложил вам сравнить сетевой вызов, когда ваш запрос отправляется через swagger и через postman, и вы должны заметить, что swagger call не имеет значения токена носителя.

Ссылка на то, как использовать авторизацию в swagger: ASP.NET авторизация пользовательского интерфейса Core Swagger с использованием IdentityServer4 - Скотт Брэди[^]