Create user on Keycloack from curl command

2020-03-26 09:49发布

Currently I try to create a user from curl command via Keycloak's Admin REST API. I can authenticate myself as an admin, I have a good answer, but when I want to create a user, I have an error like: "404 - Not Found".

Here are my curl commands:

#!/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"}'

I used the official API documentation, located at this address: https://www.keycloak.org/docs-api/4.4/rest-api/index.html

enter image description here

I have this error: enter image description here

my realm is good enter image description here

How I can fix it? Thanks in advance.

标签: curl keycloak
2条回答
Animai°情兽
2楼-- · 2020-03-26 10:17

try this, I added the content type header and modify the 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"}'
查看更多
叼着烟拽天下
3楼-- · 2020-03-26 10:20

According to Keycloak's documentation ( Server Admin > The Admin CLI > Basic operations and resource URIs ), the users endpoint should be:

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

So please fix your last URL accordingly.

You can also find a full example on Keycloak's JIRA issue #5383. Note that it is adding the content-type header explicitly as well:

Content-Type: application/json

查看更多
登录 后发表回答