Keycloak Realm-специфичная авторизация после межрегиональной аутентификации - PullRequest
1 голос
/ 08 июля 2019

Возможно ли задействовать какой-либо механизм для извлечения ролей, специфичных для области, для аутентифицированного пользователя (связанного пользователя, после перекрестной аутентификации) в Keycloak?

Моя компания имеет собственные корпоративные службы аутентификации и авторизации. Я настроил отдельную область «только для аутентификации» с федерацией пользователей (плагином), которая вызывает нашу Службу корпоративной аутентификации. Это прекрасно работает - у нас есть приложения в разных сферах (A и B), поставщик удостоверений которых указывает на брокер-клиент из области выше. Эти провайдеры Id настроены (в первом потоке входа в систему) для создания и привязки пользователей их перенесенных областей к исходной области, и таким образом мы можем установить единый вход.

Теперь нам нужно назначить роли, специфичные для области, в областях A и B. Для этого я попытался добавить еще один (специфичный для авторизации) плагин UserFederation (пытался перехватить 'validate' из ImportedUserValidation, чтобы вызвать нашу авторизационную корпоративную службу) - на этот раз в областях A и B, но он никогда не запускается .. Из-за существования их провайдера идентичности, может быть? Должен ли мой конкретный механизм авторизации быть установлен каким-либо образом в Post Flow Flow?

Любые рекомендации?

Большое спасибо, привет

1 Ответ

0 голосов
/ 22 июля 2019

Нашел способ с User Federation, немного громоздкий - работает, если пользователь не существует в области. Поэтому сначала я определяю свою политику кэширования как MAX_LIFESPAN (несколько минут), затем на getUserByUsername из моего плагина (который реализует UserLookupProvider) я создаю модель пользователя (из AbstractUserAdapterFederatedStorage), переопределяя

публичный набор getRoleMappings () {...

При этом методе я могу получить роли моего пользователя, указанные в области, из моей корпоративной службы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...