
Мне нужно авторизовать мое приложение (далее именуемое «Logic») для управления пользователями области Keycloak. «Logic» уже аутентифицируется в этой области с типом предоставления доступа «Учетные данные клиента», поэтому код уже работает.
Теперь в консоли администрирования Keycloak мне нужно добавить правильную роль для моего клиента, чтобы «Logic» имел право вызывать любую конечную точку API, предоставляемую Keycloak для управления пользователями области.
В списке клиентов области есть клиент с именем realm-management
, который Keycloak предоставляет по умолчанию для каждой области. Этот клиент может управлять всей областью, а не только ее пользователями, и для этого у него есть список ролей клиентов. manage-users
— одна из ролей в этом списке, и это роль, которую мне нужно назначить моему другому клиенту (которому я дал имя logic
в Keycloak). Другими словами, мое приложение «Logic» использует идентификатор клиента keycloak logic
для своей аутентификации, и мне нужно добавить manage-users
роль клиенту logic
.
Проблема в том, что в моих logic
настройках ролей клиента ( ) те же самые роли, перечисленные в разделе realm-management
клиент, вообще не перечислены, а в списке есть только uma_protection
роль:
Если я искал "manage-users", введя его в поле поиска, он не отображался. Между тем, если я нажимаю на эту роль в списке ролей клиента realm-management
, он показывает, что нетпользователиесть эта роль и это позволяет мне добавить рольпользователи, но не для того, чтобыклиенты, даже если эта роль фактически указана вклиент( realm-management
).
Создание новой роли в моем logic
клиенте, с тем же именем manage-users
, возможно, но я не уверен, что это правильный путь. Я имею в виду, зачем мне дублировать существующую роль? Это попахивает чем-то неправильным.
Можете ли вы подсказать мне правильный способ добавления manage-users
роли вклиентв Keycloak 23?
решение1
я, наконецполучил ответот члена официального сообщества поддержки Keycloak, и я сообщаю об этом здесь на всякий случай, если кто-то найдет мой вопрос здесь.
dasniko написал:
Если ваш клиент уже использует поток клиентских учетных данных, у него включены «сервисные учетные записи». Вам нужноназначатьроль
realm-management.manage-users
учетной записи службы на вкладке соотв. вашего клиента. Таким образом, соответствующий пользователь учетной записи службы, который отвечает в Keycloak за работу потока учетных данных клиента, получит надлежащую роль и сможет управлять вашими пользователями.
Роли можно найти, выбрав фильтр «Фильтровать по клиентам» вместо «Фильтровать по ролям области».