Предоставьте разрешения учетной записи службы клиента Keycloak для создания пользователей сферы без использования широкой роли управляющих пользователей.

У меня есть веб-приложение, которое использует Keycloak для IdM.

Я использую учетные данные пароля владельца ресурса или поток прямого предоставления для аутентификации, которая использует вызовы API REST для /auth/realms/{realm}/protocol/openid-connect/token вместо браузера перенаправляет, чтобы получить пользователю JWT.

Я хотел бы реализовать аналогичный рабочий процесс для регистрации пользователей.

Глядя на документацию Keycloak, кажется, что API администратора Keycloak предоставляет конечную точку для этого в / auth / admin / realms / {realm} / users.

Чтобы позволить клиентам взаимодействовать с API администратора Keycloak, вам необходимо создать учетную запись службы клиента и связать ее с ролью Keycloak с достаточными привилегиями для управления пользователями сферы.

Ожидаемый подход для этого, по-видимому, заключается в применении определенной роли области " управляющие пользователи" к учетной записи службы клиента. Это больше разрешений, чем я хотел бы предоставить клиенту.

Есть ли способ предоставить учетной записи службы клиента только возможность создавать новых пользователей, а не полный набор разрешений, который предоставляется управляющим пользователям?

1 ответ

Действительно, кажется, что вы не можете редактироватьmanage-usersроль или создайте новую с более точным управлением с консоли. Глядя на исходный код, вам, вероятно, придется разветвить репозиторий и добавить ожидаемое поведение.

Кажется, способ состоит в том, чтобы создать новую переменную вAdminRoles.javaфайл типа:

      public static String CREATE_USERS = "create-users";

https://github.com/keycloak/keycloak/blob/d9b271c22a170e003f328873a6a05a2665e7f79b/server-spi-private/src/main/java/org/keycloak/models/AdminRoles.java#L46

Тогда используйте его только в тех местах, гдеMANAGER_USERSenum используется для создания пользователей в исходном коде, похоже, он находится подUserPermissions.java,RolePermissions.java,GroupPermissions.javaиRealmAuth.javaфайлы.

Затем создайте собственный дистрибутив keycloak, следуя официальному руководству:https://github.com/keycloak/keycloak#building-from-source .

Другие вопросы по тегам