#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. Любые предложения, которые могут привести меня к основной причине?