Мне нужно настроить Keycloak для получения токена JWT, как в этом сообщении в блоге, но я должен сделать это с помощью cUrl. Они создают клиента, а затем обновляют его настройки access type
на confidential
, Direct Grant Flow
на direct grant
и Browser Flow
на browser
. В запросе PUT
от веб-интерфейса, который делает это, есть некоторые uuids
, которые они, кажется, вытащили из ниоткуда. Вот соответствующая часть полезной нагрузки:
"authenticationFlowBindingOverrides":{"browser":"6d77c4c7-15cf-4474-9b9f-7439dbc83b83","direct_grant":"5cb10cdb-9902-4f7f-b9da-68f887c49a75"}
Документы для ClientRepresentation не помогут. Они показывают, что все поля являются необязательными, что не имеет смысла, а authenticationFlowBindingOverrides
— это карта, но ссылка в их документах для карты мертва.
Кто-нибудь знает, откуда они берут uuid для браузера и direct_grant?
В полезной нагрузке PUT также нет ничего, что устанавливало бы Access Type
в confidential
.
Если у кого-то есть cUrl-реализация шагов пользовательского интерфейса в сообщении в блоге, мы будем очень признательны.
Запрос PUT из веб-интерфейса, который делает это, имеет некоторые uuid, которые они как бы тянутся из ниоткуда.
Эти uuid генерируются keycloak, чтобы получить их, вам нужно вызвать конечную точку:
GET KEYCLOAK_HOST/auth/admin/realms/<YOUR_REALM>/authentication/flows
Из ответа JSON
вам нужно проанализировать его и получить поле id
как alias: "browser"
, так и псевдонима: "direct grant"
.
После этого вызовите конечную точку:
PUT KEYCLOAK_HOST/auth/admin/realms/<YOUR_REALM>/clients/<YOUR_CLIENT_ID>
со следующей полезной нагрузкой:
'{"publicClient":false,"clientAuthenticatorType":"client-secret","authenticationFlowBindingOverrides":{"direct_grant":"<DIRECT_GRANT_ID>","browser":"<BROWSER_ID>"}}'
В полезной нагрузке PUT также нет ничего, что задавало бы тип доступа. конфиденциально.
Вам нужно установить поле publicClient
на false
.