Ошибка аутентификации пользовательского интерфейса Swagger при потоке кода авторизации

#c# #swagger #asp.net-core-webapi #swagger-ui #swashbuckle.aspnetcore

#c# #swagger #asp.net-core-webapi #swagger-пользовательский интерфейс #swashbuckle.aspnetcore

Вопрос:

Я настроил SwaggerUI на использование потока кода авторизации с LinkedIn. Вот моя конфигурация.

Метод CongfigureServices Startup.cs:

 services.AddSwaggerGen(options =>
{
   options.SwaggerDoc("v1", new OpenApiInfo
   {
      Title = "My Api",
      Version = "v1"
   });

   options.AddSecurityDefinition("OAuth2", new OpenApiSecurityScheme
   {
      Type = SecuritySchemeType.OAuth2,
      Flows = new OpenApiOAuthFlows
      {
         AuthorizationCode = new OpenApiOAuthFlow
         {
            AuthorizationUrl = new Uri(appSettings.Security.Jwt.AuthUrl),
            Scopes = new Dictionary<string, string>
            {
               { "r_liteprofile", ""  },
               { "r_emailaddress", "" }
            },
          }
      }
   });

   options.AddSecurityRequirement(new OpenApiSecurityRequirement
   {
     {
        new OpenApiSecurityScheme
        {
            Reference = new OpenApiReference
            {
                Type = ReferenceType.SecurityScheme,
                Id = "Bearer"
            },
            Scheme = "OAuth2",
            Name = "Authorization",
            In = ParameterLocation.Header
        },
        new string [] {}
    }
  });
});
  

Настройте метод в Startup.cs

 app
.UseSwagger()
.UseSwaggerUI(option =>
{
    option.SwaggerEndpoint($"/swagger/v1/swagger.json", "My Api v1");
    option.OAuthClientId("myclientid");
    option.OAuth2RedirectUrl("http://localhost:5000/swagger/oauth2-redirect.html");
});
  

Как только я запускаю приложение, я получаю страницу пользовательского интерфейса swagger с кнопкой авторизации. При нажатии на нее я вижу следующие доступные настройки:

введите описание изображения здесь

Я выбираю области и перенаправляюсь на страницу входа в linkedin. Когда я успешно перенаправил обратно с кодом авторизации, я получаю:

Ошибка ошибки аутентификации: не найдена

Глядя на консоль, я вижу

swagger-ui-bundle.js:71 СООБЩЕНИЕ http://localhost:5000/swagger/index.html 404 (Не найден)

Он пытается выполнить вызов POST для http://localhost:5000/swagger/index.html , который получает 404 Not Found.

Однако, глядя на этот вызов, я вижу, что код авторизации возвращается из LinkedIn.

введите описание изображения здесь

Почему этот вызов продолжает завершаться неудачей? Я попытался полностью удалить эту опцию.Oauth2RedirectUrl и я получаю тот же результат. Я также попытался установить URL-адрес перенаправления на http://localhost:5000/swagger/index.html Однако, когда я перенаправляюсь обратно, он просто открывает новую вкладку и никакого кода.

Есть какие-либо предложения о том, как я могу это решить?

Комментарии:

1. Любые предложения, которые могут привести меня к основной причине?