В моем приложении есть следующие компоненты:
- сервер хостинга ключей
- внутренний REST-API (ресурс-сервер)
- внешний интерфейс angular application
Сервер Keycloak настроен на 2 клиента. Один клиент publi c (приложение angular) и один конфиденциальный клиент (REST-API) со службами авторизации. Приложение angular должно загрузить разрешения бэкэнда, чтобы отображать другой пользовательский интерфейс в зависимости от прав пользователя. Один из способов получить необходимые разрешения - использовать token_endpoint, например, так:
this.http
.get<{ token_endpoint: string }>(
`/auth/realms/${realm}/.well-known/uma2-configuration`,
)
.pipe(
flatMap(config =>
this.http.post(
config.token_endpoint,
`grant_type=urn:ietf:params:oauth:grant-type:uma-ticket&audience=${backendClientId}`,
{
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
},
),
),
);
Если я декодирую JWT в возвращенном маркере access_token, я могу получить правильные разрешения. Для этого мне понадобится библиотека для декодирования JWT и самостоятельного обновления этого токена. Я не нашел никакой документации о том, как сделать это с библиотеками keycloak- angular или keycloak- js.
Это предполагаемый способ получения списка разрешений, связанных с пользователем и другим клиентом ? И если это так, как мне реализовать это с помощью предоставленных библиотек?