Я пытаюсь создать пользовательскую форму регистрации в Keycloak, которая создаст пользователя и назначит его группе в зависимости от выпадающего списка команды. Вот пример моей проблемы:
У меня есть несколько команд, которые будут использовать keycloak, и у каждой команды будет своя собственная группа в keycloak, определяющая все роли, к которым им нужен доступ. Одно из приложений, которое будет использовать аутентификацию keycloak, - это Grafana. Когда пользователь заходит в Grafana и пытается зарегистрировать новую учетную запись с помощью keycloak, он создает пользователя, но поскольку пользователь не назначен в группу, он попадает на страницу с ошибкой в Grafana, потому что у него нет никаких привилегий. ,
Я пытаюсь ограничить объем ручной работы, чтобы назначать сотни пользователей группам после их регистрации. У меня нет доступа к LDAP или Active Directroy.
Вот пример того, что я попробовал в моем пользовательском шаблоне register.ftl.
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('team',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="groups" class="${properties.kcLabelClass!}">Team</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<select class="${properties.kcInputClass!}" id="groups" name="groups" value="${(register.formData['groups']!'')}">
<option value="group1">Group 1</option>
<option value="group2">Group 2</option>
<option value="group3">Group 3</option>
</select>
</div>
</div>
Мне удалось добавить группу в качестве атрибута пользователя, и затем подумал, что смогу выполнить сценарий, после чего использовать API остальных, чтобы затем назначить группу, но мне тоже не повезло с этим. Я хотел бы не назначать всех в группу «только для просмотра» по умолчанию, поскольку некоторые группы не должны иметь возможность просматривать все приложения, которые мы будем использовать.
Если у кого-то есть идеи или они могут помочь мне указать верное направление, пожалуйста, дайте мне знать. У меня ограниченные знания HTML & Javascript, но я знаю, как обходить Python.