я хочу создать клиента через rest api, для этого мне нужно передать токен начального доступа (сгенерированный регистрацией клиента в keycloak) с моим запросом. Мой вопрос заключается в том, как я могу сгенерировать этот первоначальный токен доступа через rest API. кто-нибудь может помочь? [это токен, который я передаю со своим URL-адресом][1] [1]: https://i.stack.imgur.com/ibvp6.png [вот скриншот ответа, когда я пытаюсь получить начальный токен доступа, необходимый для регистрации клиента, путем передачи тела количества параметров и срока действия с помощью токен входа для admin-cli в заголовке][2] [2]: https://i.stack.imgur.com/pDrNr.png
как получить токен начального доступа при регистрации клиента keycloak с помощью rest API?
Ответы (2)
С помощью простого 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"
Но этот токен доступа действителен только в течение некоторого времени (в зависимости от настроек keycloak).
Чтобы создать клиент с 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
}
person
Julian Egner
schedule
22.11.2019
я хочу создать клиента через службу регистрации клиентов в keycloak.
- person TJ32; 22.11.2019
для этого мне нужно получить первоначальный токен доступа, я нашел URL-адрес из документации keycloak. URL-адрес, который я передал, это .... /auth/admin/realms/master/clients-initial-access... тело {количество: 5, срок действия: 10}
- person TJ32; 22.11.2019
я также передаю токен входа в качестве заголовка с запросом .... но ответ - неизвестная ошибка 403 .... можете ли вы помочь
- person TJ32; 22.11.2019
может это поможет? stackoverflow.com/questions/46470477/
- person Julian Egner; 22.11.2019
нет, это не сработало... я добавил снимок экрана с ответом на вопрос.... надеюсь, это будет полезно для вас, чтобы понять мою проблему
- person TJ32; 25.11.2019
Вы отправляете GET-запрос. Разве это не должно быть POST? keycloak.org/docs-api/8.0/rest- API/
- person Julian Egner; 25.11.2019
Чтобы получить токен начального доступа для регистрации клиента, сначала нам нужно установить клиентскую роль admin-cli как realm-{name} и выбрать из нее client-create. Затем получите токен носителя администратора для admin-cli и передайте его вместе с URL-адресом токена начального доступа.
person
TJ32
schedule
30.11.2019
То есть у вашей учетной записи администратора не было соответствующих привилегий?
- person Julian Egner; 10.03.2020