我想通过rest api创建一个客户端,为此,我需要在请求中传递一个初始访问令牌(由在keycloak中的客户端注册生成)。我的问题是我如何通过rest api生成该初始访问令牌。有人可以帮忙吗? [这是我通过网址传递的令牌] [1] [1]:https://i.stack.imgur.com/ibvp6.png [这是当我尝试通过在标头中传递admin-cli的parm计数和带有登录令牌的过期令牌来获取注册客户端所需的初始访问令牌时的响应的屏幕截图] [2] [2]:https://i.stack.imgur.com/pDrNr.png
答案 0 :(得分:1)
通过简单的GET REST-Request,您可以获得用于以后请求的令牌
GET "grant_type=password&client_id=admin-cli&username=$USERNAME&password=$PASSWORD" "$HOST/auth/realms/$REALM/protocol/openid-connect/token"
作为bash(必须安装jq):
#get admin bearer token
AUTH_RESPONSE_KC_ADMIN=$(curl --silent -d "grant_type=password&client_id=admin- cli&username=$USERNAME&password=$PASSWORD" "$HOST/auth/realms/master/protocol/openid-connect/token")
if [[ $AUTH_RESPONSE_KC_ADMIN != *"access_token"* ]]; then
echo "No access token for keycloak admin!"
echo $AUTH_RESPONSE_KC_ADMIN
exit -1
fi
TOKEN_KC_ADMIN=$(echo $AUTH_RESPONSE_KC_ADMIN | jq -r '.access_token')
AUTH_TOKEN_KC_ADMIN="Authorization: Bearer $TOKEN_KC_ADMIN"
但是此访问令牌仅在一段时间内有效(取决于密钥斗篷设置)
要使用REST创建客户端,请执行以下操作:
#use: create_client clientName
function create_client {
CLIENT='{"enabled":true,"attributes":{},"redirectUris":["*"],"clientId":"'$1'","protocol":"openid-connect", "secret":"'$SECRET'","clientAuthenticatorType":"client-secret","publicClient":"false"}'
curl -i --silent -d "$CLIENT" -H "$AUTH_TOKEN_KC_ADMIN" -H "$CONTENT_TYPE" $HOST/auth/admin/realms/$REALM/clients | head -1
}
答案 1 :(得分:0)
为了获得用于客户端注册的初始访问令牌,首先我们需要将admin-cli的客户端角色设置为realm- {name},然后从中选择client-create。然后获取admin-cli的管理员承载令牌,并将其与url一起传递给初始访问令牌。