Keycloak 密钥斗篷-从注册表中将用户分配到组

Keycloak 密钥斗篷-从注册表中将用户分配到组,keycloak,keycloak-services,keycloak-rest-api,Keycloak,Keycloak Services,Keycloak Rest Api,我正在尝试在KeyClope中创建一个自定义注册表单,该表单将创建用户并根据团队下拉选择将其分配给一个组。下面是我的问题的一个例子: 我有多个团队将使用keydove,每个团队都将在keydove中拥有自己的团队,他们需要访问所有角色。Grafana是一个将使用KeyClope身份验证的应用程序。当用户转到Grafana并尝试通过KeyClope注册新帐户时,它会创建该用户,但由于该用户未分配到组,因此他们会在Grafana中出现错误页面,因为他们没有任何权限。 我试图限制手动工作的数量,以

我正在尝试在KeyClope中创建一个自定义注册表单,该表单将创建用户并根据团队下拉选择将其分配给一个组。下面是我的问题的一个例子:
我有多个团队将使用keydove,每个团队都将在keydove中拥有自己的团队,他们需要访问所有角色。Grafana是一个将使用KeyClope身份验证的应用程序。当用户转到Grafana并尝试通过KeyClope注册新帐户时,它会创建该用户,但由于该用户未分配到组,因此他们会在Grafana中出现错误页面,因为他们没有任何权限。
我试图限制手动工作的数量,以便在用户注册后将数百个用户分配到组中。我没有访问LDAP或Active Directroy的权限。

下面是我在custom 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>

团队
第一组
第2组
第3组
我成功地将组添加为用户属性,然后认为可以执行一个脚本,然后使用RESTAPI分配组,但我也没有太多的运气。我不想把每个人都分配到默认的“仅查看”组,因为有些组不需要查看我们将使用的所有应用程序。


如果有人有任何想法或可以帮助我指出正确的方向,请让我知道。我对HTML和Javascript的知识有限,但对Python很熟悉

您是否使用任何后端服务器,或者您是否使用javascript完成所有工作?据我所知,您希望将新用户添加到KC组。您是否自己从JS创建用户?正确的方法是,设置一个Python后端并给它一个客户端ID,它可以创建新用户并分配用户组。python服务器将能够创建用户并为其分配组,而不是前端代码。前端代码将只与Python服务器通信,以便创建新用户,而不知道幕后发生了什么。新用户可以单击“New user”(新用户)按钮,进入KeyClope注册页面,填写帐户信息并按submit。钥匙斗篷做其余的事。(我基本上是在扩展默认的注册表)不过,我真的很喜欢你的想法。我有一个脚本,可以将用户添加到组中。我可能能够进一步阐述这一点,并构建一个flask或django web服务器,当用户按下submit按钮时可以调用该服务器,而不是让KC处理创建。我想这就是你所说的。确切地说,你将把你的Django应用程序作为一个具有用户创建和角色分配权限的KeyClope客户端,这样当一个新的应用程序用户被创建时,Django将管理创建,并有权通过KC API进行创建。另一个解决方法是让KC管理用户创建并创建自己的事件监听器SPI,如果用户创建恰好是一个事件(我不确定):您是否使用任何后端服务器,或者您是否使用javascript完成所有工作?据我所知,您希望将新用户添加到KC组。您是否自己从JS创建用户?正确的方法是,设置一个Python后端并给它一个客户端ID,它可以创建新用户并分配用户组。python服务器将能够创建用户并为其分配组,而不是前端代码。前端代码将只与Python服务器通信,以便创建新用户,而不知道幕后发生了什么。新用户可以单击“New user”(新用户)按钮,进入KeyClope注册页面,填写帐户信息并按submit。钥匙斗篷做其余的事。(我基本上是在扩展默认的注册表)不过,我真的很喜欢你的想法。我有一个脚本,可以将用户添加到组中。我可能能够进一步阐述这一点,并构建一个flask或django web服务器,当用户按下submit按钮时可以调用该服务器,而不是让KC处理创建。我想这就是你所说的。确切地说,你将把你的Django应用程序作为一个具有用户创建和角色分配权限的KeyClope客户端,这样当一个新的应用程序用户被创建时,Django将管理创建,并有权通过KC API进行创建。另一个解决方法是让KC管理用户创建并创建自己的事件侦听器SPI,如果用户创建碰巧是一个事件(我不确定):