Keycloak 为什么钥匙斗篷会隐藏“钥匙”;服务帐户管理cli“;“下的用户”;“用户”;部门?
我试图调用KeyClope的REST api在一个领域下创建新用户,并遵循本教程: 我能够如下配置Keycloak 为什么钥匙斗篷会隐藏“钥匙”;服务帐户管理cli“;“下的用户”;“用户”;部门?,keycloak,keycloak-rest-api,Keycloak,Keycloak Rest Api,我试图调用KeyClope的REST api在一个领域下创建新用户,并遵循本教程: 我能够如下配置管理cli客户端: 我可以通过使用客户端id和密码获得访问令牌: 但是,当我使用承载令牌向/auth/admin/realms/myapp/users发出POST请求时,它无法创建用户,我收到了一个“未知错误” 我搜索了互联网、社区和文档,但没有任何线索。经过一个又一个小时的尝试,我终于找到了一个解决方案: 您需要首先转到客户端-->管理cli-->会话: 然后单击用户“Service acc
管理cli
客户端:
我可以通过使用客户端id和密码获得访问令牌:
但是,当我使用承载令牌向/auth/admin/realms/myapp/users
发出POST请求时,它无法创建用户,我收到了一个“未知错误”
我搜索了互联网、社区和文档,但没有任何线索。经过一个又一个小时的尝试,我终于找到了一个解决方案:
您需要首先转到客户端-->管理cli-->会话:
然后单击用户“Service account admin cli”并进行配置,使其具有管理员角色
然后,前一个POST请求将成功创建一个新用户
我无法理解为什么此用户“Service account admin cli”隐藏在用户部分下:
为什么它会被隐藏???人们应该如何找到此用户(Service account admin cli)并对其进行配置?Keyclope是否希望人们通过单击客户端-->管理cli-->会话来找到它,然后从那里看到用户???IMO如果开始学习Keyclope,应该避免使用主域,或者在没有很好理由的情况下更改管理cli配置 从文档中可以看到: 当您第一次启动keydrope时,keydrope会创建一个 为您预定义的领域。这个初始领域是主领域。信息技术 是领域层次结构中的最高级别。中的管理员帐户 此域具有查看和管理创建的任何其他域的权限 在服务器实例上定义初始管理员帐户时, 您可以在主域中创建一个帐户。您首次登录到 管理控制台也将通过主域访问。 我们建议您不要使用主域来管理用户 和组织中的应用程序。保留主域的使用权 供超级管理员在系统中创建和管理领域。 遵循此安全模型有助于防止意外更改和 遵循传统,只允许用户帐户访问那些 成功完成其任务所需的特权和权力 当前任务 因此,通常您会创建一个不同的领域,并在那里创建用户。除非您真的想在主域上创建一个用户,通常是类似管理员的用户 也就是说,要使用KeyClope Rest API创建用户,只需通过提供管理员用户的名称和密码,从管理员cli客户端请求代表管理员用户的令牌,例如:
TOKEN=$(curl -k -sS -d "client_id=admin-cli" \
-d "username=$ADMIN_NAME" \
-d "password=$ADMIN_PASSWORD" \
-d "grant_type=password" \
http://$KEYCLOAK_IP/auth/realms/master/protocol/openid-connect/token)
curl -k -sS -X POST https://$KEYCLOAK_IP/auth/admin/realms/$REALM_NAME/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d "$USER_JSON_DATA"
从$TOKEN对象中提取访问令牌(我们将其命名为$access\u TOKEN
)
然后按如下方式创建用户:
TOKEN=$(curl -k -sS -d "client_id=admin-cli" \
-d "username=$ADMIN_NAME" \
-d "password=$ADMIN_PASSWORD" \
-d "grant_type=password" \
http://$KEYCLOAK_IP/auth/realms/master/protocol/openid-connect/token)
curl -k -sS -X POST https://$KEYCLOAK_IP/auth/admin/realms/$REALM_NAME/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d "$USER_JSON_DATA"
$USER\u JSON\u DATA
将是要创建的用户的JSON数据表示形式。默认情况下,无需将角色admin添加到使用KeyClope部署的主admin
KeyClope是否希望人们通过单击客户端-->
管理cli-->会话
如果安装正常,您只需要知道(正如我已经描述的)管理员的名称和密码,这是在初始安装中配置的
按照此设置,然后您可以:
您需要首先转到客户端-->管理cli-->会话:
您将看到以下内容:
现在的区别是,如果单击admin user>roles,您将看到以下内容:
管理员用户已具有管理员角色。无需:
进行配置,使其具有管理员角色
现在,如果您完全按照原来的方式更改admin_cli配置,则需要将admin角色添加到服务帐户admin cli
用户
我无法理解为什么此用户“Service account admin cli”是
隐藏在用户部分下:
这是一个实现细节,不幸的是,我在网上也找不到对此的解释。但我确实同意,如果没有进一步的背景,它看起来不太方便用户。现在,这就引出了一个问题:为什么教程没有提醒读者这一点
现在,如果有人推测一下,将该用户从用户列表中隐藏的原因可能是: