Аутентифицировать Postgrest API через Keycloak - PullRequest
0 голосов
/ 15 октября 2018

API Postgrest могут быть защищены с помощью встроенных токенов JWT или сторонних сервисов, таких как Auth0, Okta или Keycloak (http://postgrest.org/en/v5.0/install.html)

. Мы хотим использовать JWT, предоставляемый только Keycloak, но очень ограничендокумент доступен.

Кто-нибудь может подсказать мне, как я могу защитить postgrest apis с помощью keycloak?

спасибо

1 Ответ

0 голосов
/ 23 декабря 2018

Есть несколько способов сделать это, я просто опишу один из них:

  1. Настройка Keycloak для передачи требуемых утверждений в токене.(Вероятно, вы захотите запрос типа "role": "username")
  2. Получите ключ-ключ, который использует ключ, и передайте его в разделе jwt-secret конфигурации postgrest
  3. Настройте веб-сервер насвязаться с keycloak и получить токены.
  4. Передать токен в браузер
  5. Использовать токен для доступа к postgrest

Подробнее

  1. В консоли администратора keycloak перейдите по адресу: /#/realms/<realm name>/clients/<client id>/mappers и задайте требуемые требования
  2. В консоли администратора keycloak на #/realms/<realm name>/keys вы можете получить открытый ключ rsa, перевести его в формат jwkи сохраните его в конфигурации postgrest.Чтобы перевести его на jwk
    • Переведите его в формат pem, заключив его в -----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----
    • Переведите его в формат jwk.Хороший инструмент pem-jwk
  3. Есть бесконечные варианты.Пример узла js: https://github.com/keycloak/keycloak-nodejs-connect/tree/master/example, использующий пакет keycloak-connect
  4. Вы можете прочитать токен в req.kauth.grant и поместить его в скрытое поле HTML, отправляемого в браузер
  5. Из браузера прочитайте токен и поместите его в заголовок аутентификации с префиксом носителя.Если вы используете axios:

    axios({
      method: 'get',
      url: 'your url',
      headers: { 'authorization': `Bearer ${token}` }
    })
    

В качестве дополнительного примечания вы не защищаете postgrest apis таким способом, вы просто используете keycloak для управления пользователями и генерирования необходимых токенов

...