Невозможно обновить токен доступа после того, как был выпущен токен обновления и роли были отозваны - PullRequest
0 голосов
/ 30 августа 2018

У меня проблема с обновлением токенов доступа, когда роли отменяются после того, как токен обновления был выпущен в Keycloak.

Давайте предположим, что у меня есть jdoe пользователь, которому назначено представление отчетов роли клиента из отчетов клиента.

Шаги для воспроизведения:

  1. Получить токен доступа вместе с токеном обновления с помощью Direct Grant для пользователя jdoe
  2. Отмена назначения роли просмотра отчетов для пользователя в консоли администратора безопасности.
  3. Обновить токен доступа

Результат: вместо получения нового токена доступа с ограниченными ролями возвращается следующая ошибка:

{
  "error":"invalid_scope",
  "error_description":"User no long has permission for client role view-reports"
}

Что происходит, прежде чем вернуть обновленный токен доступа, keycloak сравнивает роли во вновь созданном токене доступа с ролями в токене обновления. Если хотя бы одна роль области / клиента, присутствующая в токене обновления, отсутствует во вновь созданном токене, выдается ошибка invalid_scope (соответствующий код можно найти здесь: https://github.com/keycloak/keycloak/blob/master/services/src/main/java/org/keycloak/protocol/oidc/TokenManager.java#L590)

У меня вопрос - действительно ли эта проверка необходима?

Должны ли токены обновления содержать какую-либо информацию о доступе (realm_access / resource_access) вообще?

Разве это не должно быть настраиваемым?

...