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

RAb*_*ham 14 keycloak

如何在 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)
Run Code Online (Sandbox Code Playgroud)

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

如果有人知道如何使用 python 客户端制作它,那也会很棒。

Vad*_*man 46

  1. 在领域中创建普通用户:
    1. 打开管理控制台并选择您选择的领域(左上角的领域选择框)。
    2. 转到users(侧边栏)-> add user(右侧的按钮)
    3. 填写必填字段并按下save按钮。
    4. 打开Credentials选项卡并设置密码。
    5. 打开Role Mapping标签:
      1. realm-management在 下选择Client Roles
      2. 选择所有可用角色并按Add selected
  2. 转至 http://keycloak/auth/admin/REALM_NAME/console(将REALM_NAME替换为您在其中创建用户的领域名称)并登录。
  3. 您应该只看到此领域的管理 UI。

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


Sub*_*shi 9

请看一下这个命令

/bin/add-user.sh -r myrealm -u admin -p <pwd>
Run Code Online (Sandbox Code Playgroud)

在这里,您尝试运行一个 shell 脚本,该脚本将创建一个用户,该用户的admin某些权限password位于realm下myrealm

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

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

如果您不知道如何创建领域,这里有一些admin-cli执行curl此操作的命令

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

/opt/keycloak/bin/kcadm.sh create realms -s realm=<Realm-NAME> -s id="<realm-id>" -s enabled=true -s 
Run Code Online (Sandbox Code Playgroud)

如何借助curl命令创建realm

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
Run Code Online (Sandbox Code Playgroud)


rav*_*iru 7

您应该能够使用add-user-keycloakcommand创建,但您需要重新启动 keycloak 服务器才能实际添加用户。这是文档

/bin/add-user-keycloak.sh -r myrealm -u admin -p <password>
Run Code Online (Sandbox Code Playgroud)

但是在添加用户之前,您需要myrealm使用创建领域

  kcadm.sh create realms ........
Run Code Online (Sandbox Code Playgroud)


Spa*_*vs1 6

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

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

1 - 创建领域

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

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

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

/!\ 这个角色只对这个领域有效,并且只会影响和这个领域相关的用户。

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

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

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

就这样。

  • Keycloak 稍微改变了这个工作流程。现在没有“复合角色”复选框;它是根据您分配给该角色的角色推断出来的。另外,当我单击“分配角色”时,它最初仅显示领域角色,而不显示客户端角色。我必须打开过滤器并选择“按客户过滤”才能查看管理角色。 (4认同)
  • @carlin.scott 感谢您的评论,帮助很大。URL 也更改为“http://keycloak/admin/REALM_NAME/console”(不带“/auth”)。 (2认同)