【发布时间】:2020-06-01 11:51:50
【问题描述】:
目前我尝试通过 Keycloak 的 Admin REST API 从 curl 命令创建用户。我可以将自己验证为管理员,我有一个很好的答案,但是当我想创建一个用户时,我们会收到如下错误:548 {"error":"HTTP 401 Unauthorized"}
这是我的 curl 命令:
#!/bin/bash
echo "* Request for authorization"
RESULT=`curl --data "username=rahul&password=password&grant_type=password& client_id=admin-cli" http://localhost:8080/auth/realms/demo/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/demo/users -H "Content-Type: application/json" -H "Authorization: bearer $TOKEN" --data '{"firstName":"xyz","lastName":"xyz", "email":"demo2@gmail.com", "enabled":"true"}'
错误日志:
curl -v http://localhost:8080/auth/admin/realms/demo/users -H "Content-Type: application/json" -H "Authorization: bearer $TOKEN" --data '{"firstName":"xyz","lastName":"xyz", "email":"demo2@gmail.com", "enabled":"true"}'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying ::1:8080...
* Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> POST /auth/admin/realms/demo/users HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.70.0
> Accept: */*
> Content-Type: application/json
> Authorization: bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJuNGhwUUdSeUZDcmhCTzJZbWhwc0FOWG9ZY0Ztak9CMmF3Y0RPdTNNOHhRIn0.eyJleHAiOjE1OTEwMTE0MDEsImlhdCI6MTU5MTAxMTEwMSwianRpIjoiYWMxYTYyZTEtYzUwMi00NzQ0LTgwMDAtMGQ2MWFkMzU2YzIxIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL2RlbW8iLCJzdWIiOiJjYTc0MDk1Ni1jOTQ2LTQ2ZjktODBkZS1jOTFkZDc4MWJjMTIiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJhZG1pbi1jbGkiLCJzZXNzaW9uX3N0YXRlIjoiMDdjODFjODQtM2FlOS00NzUyLTkxMzgtMWY4Yzg2Zjg3NWMzIiwiYWNyIjoiMSIsInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwibmFtZSI6IlJhaHVsIEt1bWFyIiwicHJlZmVycmVkX3VzZXJuYW1lIjoicmFodWwiLCJnaXZlbl9uYW1lIjoiUmFodWwiLCJmYW1pbHlfbmFtZSI6Ikt1bWFyIiwiZW1haWwiOiJhYmNAYWJjLmNvbSJ9.BP1krGeTyTVPhKY8zHCmYowNwnGWl-lgMN7XKukUjRgxl6EEJwERwtbiruX0Qv6bZOAx5VMCntcWLPQgCTFzFXJSOnqf_YLKoUEUKrB3Lp8RHgAax0daPFVp2F86cAQ4x_ExADqepcujinvi1qP-wyWidEEVq6_j6aprzLl59y8cN6mWYL2yIZ2Vb6ZnjFHLOsOo-GZBsE1t31nG8rqPscKKhGVj7SLwexnPXCATmqYW1sc6LJgUUh2zcJrI-L8hgfyTyUHrgzi5gB7YE5mRi3M1vyHfmKNSvnca-UXo7O8OHzTzTmrDQcaTrk86xaSCcL4qm-7s9xHLeYGMAqwGEQ
> Content-Length: 81
>
} [81 bytes data]
* upload completely sent off: 81 out of 81 bytes
* Mark bundle as not supporting multiuse
< HTTP/1.1 401 Unauthorized
< Connection: keep-alive
< X-XSS-Protection: 1; mode=block
< Strict-Transport-Security: max-age=31536000; includeSubDomains
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
< 548{"error":"HTTP 401 Unauthorized"}
* Connection #0 to host localhost left intact
【问题讨论】: