Keycloak - 在领域中创建管理员用户

Posted

技术标签:

【中文标题】Keycloak - 在领域中创建管理员用户【英文标题】:Keycloak - Create Admin User in a Realm 【发布时间】:2019-11-06 15:31:04 【问题描述】:

如何在 Keycloak 的领域中创建管理员用户?我试过/bin/add-user.sh -r myrealm -u admin -p <pwd> 它给了我错误:


 * Error *
WFLYDM0065: The user supplied realm name 'myrealm' does not match the realm name discovered from the property file(s) 'ManagementRealm'.

Exception in thread "main" org.jboss.as.domain.management.security.adduser.AddUserFailedException: WFLYDM0065: The user supplied realm name 'myrealm' does not match the realm name discovered from the property file(s) 'ManagementRealm'.
    at org.jboss.as.domain.management.security.adduser.ErrorState.execute(ErrorState.java:72)
    at org.jboss.as.domain.management.security.adduser.AddUser.run(AddUser.java:133)
    at org.jboss.as.domain.management.security.adduser.AddUser.main(AddUser.java:231)
    at org.jboss.modules.Module.run(Module.java:352)
    at org.jboss.modules.Module.run(Module.java:320)
    at org.jboss.modules.Main.main(Main.java:593)

我试过/bin/add-user-keycloak.sh -r myrealm -u admin -p <pwd>。它要求我重新启动服务器,但我也没有看到用户。

如果有人知道如何使用 python 客户端制作它,那就太好了。

【问题讨论】:

您是否创建了名为“myrealm”的领域? @ravthiru。是的,我之前以主管理员身份登录并创建了领域 myrealm。 【参考方案1】:
    在领域中创建普通用户:
      打开管理控制台并选择您选择的领域(左上方的领域选择框)。 转到users(侧边栏)-> add user(右侧按钮) 填写必填字段并按save 按钮。 打开Credentials标签并设置密码。 打开Role Mapping标签:
        Client Roles下选择realm-management。 选择所有可用角色并按Add selected
    转到 http://keycloak/auth/admin/REALM_NAME/console(将 REALM_NAME 替换为您在其中创建用户的领域名称)并登录。 您应该只看到此领域的管理 UI。

您还可以通过 Admin REST API 自动创建用户:https://www.keycloak.org/docs-api/10.0/rest-api/index.html#_users_resource

【讨论】:

【参考方案2】:

您应该可以使用add-user-keycloak 命令创建,但您需要重新启动keycloak 服务器才能真正添加​​用户。这是documentation

/bin/add-user-keycloak.sh -r myrealm -u admin -p <password>

但在添加用户之前,您需要使用

创建领域 myrealm
  kcadm.sh create realms ........

【讨论】:

@ravithru。你能告诉我重启服务器的命令吗?我尝试使用$ ./jboss-cli.sh --connect command=:reload 重新启动,但没有成功。虽然我使用的是 kubernetes,这可能会使情况复杂化。 我们将所有设置作为初始化脚本的一部分进行,该脚本启动 keycloak,创建所需的用户和领域,然后重新启动 keycloak。不确定我们是否在这里使用 kill 任何可用的东西。【参考方案3】:

从您的示例中,我想您想创建一个管理新领域的管理员。然后一个管理员形成这个新领域,不同于主(默认)领域。

简单地说,这是在领域中创建管理员的方法。

1 - 创建领域

Master 领域,创建一个新领域 (Myrealm) 确保在该新领域(在主领域下的列表中选择它)

2 - 为新创建的领域创建一个admin 角色

在菜单(左侧)的Configure 主标题下,选择RolesRealm Roles 选项卡中,单击按钮Add Role 并为其命名(admin)和描述(Myrealm admin role)并打开Composite Role 在新显示的部分(复合角色)中,输入 client roles 字段:领域管理,然后选择它。 从Available Roles中选择该选择中的所有可用元素,单击[添加选定]按钮。

/!\此角色仅适用于该领域,并且只会影响与该领域相关的用户。

3 - 影响用户的管理员角色

仍然在同一个领域,创建或选择您希望它成为管理员的用户 转到其Role Mappings 选项卡,并将可用角色admin 发送给分配的角色。

尝试登录http://keycloak/auth/admin/REALM_NAME/console(将 REALM_NAME 替换为您在其中创建用户的领域名称)并调整此领域管理员用户的权限(从另一个具有主管理员帐户的浏览器)。例如,新的管理领域用户可以删除角色(这是不正常的),它可以在他们的领域上做很多你不希望它明确地做的事情......(我猜)

就是这样。

【讨论】:

完成所有设置并访问链接localhost:8080/auth/admin1/Myrealm/console“我们很抱歉...找不到页面” @ka3ak,我看到你有[url]/admin1/ 而不是admin。此外,您必须根据您的 apache 或 nginx 检查反向代理...还有一个选项 PROXY_ADDRESS_FORWARDING 需要您将其设置为 true... 是的,我创建了 admin1 而不是 admin。这是故意的【参考方案4】:

请看一下这个命令

/bin/add-user.sh -r myrealm -u admin -p <pwd>

在这里,您正在尝试运行一个 shell 脚本,该脚本将在领域 myrealm 下创建一个用户 admin 和一些 password

因此,在您要在其下创建用户之前,它的强制myrealm 领域应该存在。

如果这不起作用,请尝试在master 领域下创建一个用户,这是安装 keycloak 后存在的默认领域。

如果你不知道如何创建领域,这里有一些 admin-clicurl 命令可以做到这一点

如何在 admin-cli 的帮助下创建领域

/opt/keycloak/bin/kcadm.sh create realms -s realm=<Realm-NAME> -s id="<realm-id>" -s enabled=true -s 

如何借助 curl 命令创建领域

curl -v <Keycloak-Ip-address>:<Port>/auth/admin/realms -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" --data  '"realm":"Realm-name","id":"Realm-id","enabled":"true"' -k

【讨论】:

我之前已经通过登录主 UI 创建了 myrealm,我的 kubernetes 脚本为其创建了管理员/密码。但由于我自己创建了 myrealm,我似乎无法为其创建管理员用户。 我们也在做同样的事情,创建领域然后是用户,从来没有遇到过这样的问题,尝试通过 admin-cli 或 curl 或 UI 创建相同的,看看你面临同样的问题吗? 感谢您的快速回复!您使用哪一个来创建管理员? add-user 还是 add-user-keycloak?另外,您之后是否重新启动服务器?如果是这样,你是怎么做到的?我已经使用 UI 创建了该领域,并且可以正常工作。我可以在 myrealm 中添加普通用户,而不是管理员用户。 我们正在使用 admin-cli 创建用户、领域、组等,现在我们移至 Docker 容器,因此现在从 admin-cli 移至 curl 命令。 @Sankar。不,我不能。

以上是关于Keycloak - 在领域中创建管理员用户的主要内容,如果未能解决你的问题,请参考以下文章

通过 keycloak admin 客户端在 keycloak 中创建用户返回 IllegalArgumentException

Keycloak 管理员用户创建

如何在 Keycloak 中创建客户端以与 AWS Cognito 身份联合使用

是否可以通过 CLI - GUI 在(Keycloak 或 RH-SSO)中创建领域?

Keycloak中新添加的领域管理员无法登录领域

如何在 Keycloak 中授予部分用户部分用户管理权限?