#swagger #identityserver4 #swagger-ui
Вопрос:
В моем ASP.NET 5 Проект API, я настроил пользовательский интерфейс Swagger для включения авторизации с помощью потока кода авторизации, как описано здесь: https://lurumad.github.io/swagger-ui-with-pkce-using-swashbuckle-asp-net-core. При нажатии на кнопку Авторизации в пользовательском интерфейсе Swagger я могу успешно войти в систему. Мой IdP-сервер идентификации 4. Версия с перекосом.Пакет AspNetCore 6.2.2 (последний).
Проблема теперь в том, что маркер доступа не содержит никакой информации о профиле пользователя, такой как имя, фамилия и т.д. Подзапрос присутствует, но мне нужна дополнительная информация о пользователе. Перед входом в систему я выбрал область профиля, которая также включена в код сантехники SwaggerUI. Переменная scopeList включает область профиля.
options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.OAuth2,
Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = new Uri(disco.AuthorizeEndpoint),
TokenUrl = new Uri(disco.TokenEndpoint),
Scopes = scopeList
}
}
});
Я проверил маркер доступа в своем API, используя этот код:
var accessToken = context.HttpContext.GetTokenAsync("access_token").GetAwaiter().GetResult();
В Startup.cs у меня также есть эта строка, чтобы убедиться, что дополнительное утверждение присутствует в заявлениях пользователей в API:
JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
Это не должно оказывать никакого влияния на токен доступа, возвращаемый сервером идентификации (верно?).
Когда я вставляю маркер доступа в https://jwt.io, он не содержит информации о профиле. Как я могу настроить SwaggerUI для запроса информации профиля, поступающей с сервера идентификации?
Я думаю, что мой сервер идентификации настроен правильно, когда я вхожу в веб-приложение, которое также аутентифицируется на том же сервере идентификации, информация о профиле присутствует в маркере доступа.