从 curl 命令在 Keycloak 上创建用户

Create user on Keycloack from curl command

目前我尝试通过 Keycloak 的 Admin REST API 从 curl 命令创建用户。 我可以以管理员身份验证自己,我有一个很好的答案,但是当我想创建一个用户时,我有一个错误,如:“404 - 未找到”。

这是我的 curl 命令:

#!/bin/bash

echo "* Request for authorization"
RESULT=`curl --data "username=pierre&password=pierre&grant_type=password&client_id=admin-cli" http://localhost:8080/auth/realms/master/protocol/openid-connect/token`

echo "\n"
echo "* Recovery of the token"
TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'`

echo "\n"
echo "* Display token"
echo $TOKEN

echo "\n"
echo " * user creation\n"
curl   http://localhost:8080/apiv2/users -H "Authorization: bearer $TOKEN"   --data '{"firstName":"xyz","lastName":"xyz", "email":"demo2@gmail.com", "enabled":"true"}'

我使用了官方 API 文档,位于这个地址:https://www.keycloak.org/docs-api/4.4/rest-api/index.html

我有这个错误:

我的境界不错

我该如何解决? 提前致谢。

根据 Keycloak 的文档 (Server Admin > The Admin CLI > Basic operations and resource URIs),users 端点应该是:

http://localhost:8080/auth/admin/realms/apiv2/users

所以请相应地修正你的最后一个URL。

您还可以在 Keycloak's JIRA issue #5383 上找到完整示例。请注意,它也明确添加了 content-type header:

Content-Type: application/json

试试这个,我添加了内容类型 header 并修改了 url :

#!/bin/bash

echo "* Request for authorization"
RESULT=`curl --data "username=admin&password=Pa55w0rd&grant_type=password&client_id=admin-cli" http://localhost:8080/auth/realms/master/protocol/openid-connect/token`

echo "\n"
echo "* Recovery of the token"
TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'`

echo "\n"
echo "* Display token"
echo $TOKEN

echo "\n"
echo " * user creation\n"
curl -v http://localhost:8080/auth/admin/realms/apiv2/users -H "Content-Type: application/json" -H "Authorization: bearer $TOKEN"   --data '{"firstName":"xyz","lastName":"xyz", "email":"demo2@gmail.com", "enabled":"true"}'