无法使用密钥斗篷创建新用户:403 unknown_error

时间:2020-07-17 20:20:28

标签: keycloak

此问题曾被问过,但没有一个解决方案对我有用。 我已经创建了一个bash脚本来在我的披风服务器上注册一个新用户。 bashscript如下所示:

#!/bin/sh
RESULT=$(curl -s --location --request POST 'http://localhost:8180/auth/realms/master/protocol/openid-connect/token' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'grant_type=client_credentials' --data-urlencode 'client_id=admin-cli' --data-urlencode 'client_secret=12345678-12a3-1234-bc12-d12345678910');
TOKEN=$(echo $(echo "$RESULT" | jq .access_token))
TOKEN=$(echo "${TOKEN//\"}")
echo "$TOKEN\n\n"
USER=$(curl --location -v --request POST 'http://localhost:8180/auth/admin/realms/MyMarketplace/users' --header 'Content-Type: application/json' --header "Authorization: Bearer $TOKEN" --data-raw '{"enabled":"true", "username":"app-user"}');
echo $USER;

运行此脚本时,我不断得到以下输出:

HTTP/1.1 403 Forbidden
< 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
< Content-Type: application/json
< Content-Length: 25
< Date: Fri, 17 Jul 2020 20:11:40 GMT
< 
{ [25 bytes data]
100    66  100    25  100    41    974   1597 --:--:-- --:--:-- --:--:--  1640
 * Connection #0 to host localhost left intact
{"error":"unknown_error"}

我不确定为什么。这是我尝试过的:

  • 我已确保将请求发送到的URL正确。
  • 我已经确保用户名是唯一的,并且已经提供了所有必填字段。
  • 在MyMarketplace领域中,我从客户端“ realm-management”添加了一个领域角色“ admin”和一个客户端角色“ manage-users”,并将该领域角色分配给了我的客户范围(按照{ {3}}答案)
  • 在主域中,我将管理用户角色分配给客户端admin-cli的范围。

这些都没有产生任何结果,所以我用光了所有的选择。 如果有人可以帮助我了解我的缺失,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

像以前一样使用和配置const validateLineup = lineup => lineup.reduce((sum, {salary}) => sum + salary, 0) <= 45000; 客户端,但要在admin-cli领域中。不要使用MyMarketplace领域。

答案 1 :(得分:0)

使用http://localhost:8180/auth/realms/MyMarketplace/protocol/openid-connect/token获取access_token并从admin-cli中的manage-users客户端授予realm-management客户端Service Account Roles角色,然后使用访问令牌调用http://localhost:8180/auth/admin/realms/MyMarketplace/users在标题和"enabled": true, "username": "user"正文中。 确保您启用的布尔值看起来像这样,不要使用"",我认为keycloak会将您的请求读取为String。 我认为它将解决您的问题。