Есть ли способ использовать аутентификацию KeyCloak без использования его интерфейса? - PullRequest
0 голосов
/ 28 февраля 2019

Итак, я строю систему API.Я хочу использовать KeyCloak для аутентификации, а также управления пользователями, потому что он имеет хороший контроль доступа.Я интегрирую его с Ktor и хочу, чтобы мой пользователь использовал свой собственный интерфейс.Или, по крайней мере, я хочу создать пользовательский интерфейс.

Я читал о настройке темы, но это не то, что я хочу.Я также узнал, что интерфейс KeyCloak тесно интегрирован в их код.Я просто надеялся узнать, смогу ли я использовать, например, пользовательский интерфейс Android для всего потока входа в систему, по крайней мере, когда одно из клиентских приложений будет мобильным?

Если это невозможно, то я думаю, что этовряд ли это возможно, есть ли какая-либо другая библиотека или инфраструктура для управления доступом, предпочтительно та, которая работает с Ktor?

1 Ответ

0 голосов
/ 15 августа 2019

Если вы не хотите использовать Keycloak UI или создавать собственные настраиваемые темы, вы можете использовать Учетные данные для пароля владельца ресурса flow.

Для этого создайте новый или используйтесуществующий confidential клиент.Обязательно установите переключатель Direct Access Grants Enabled в положение ON.

После этого получите токен от своего клиента (веб-страница, CLI, мобильный телефон).Здесь я использую curl и jq для простоты:

KCHOST=https://yourkeycloak.com
REALM=your-realm
CLIENT_ID=your-confidential-client
CLIENT_SECRET=xxxxxxx-yyyyyyyy-zzzzzzzzz

ACCESS_TOKEN=`curl \
  -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" \
  -d "grant_type=client_credentials" \
  "$KCHOST/auth/realms/$REALM/protocol/openid-connect/token"  | jq -r '.access_token'`

PS Для отладки я создал инструмент CLI под названием brauzie , который может помочь вам выбрать ипроанализируйте ваши токены JWT (области, роли и т. д.).Он может быть использован как для публичных, так и для конфиденциальных клиентов.Вы также можете использовать Почтальон и https://jwt.io

HTH:)

...