Keycloak Gatekeeper не блокирует запросы - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь использовать keycloak + keycloak-gatekeeper для авторизации в личном API: api.mydomain.com.до сих пор я сделал:

  1. Создано царство MY-REALM в Keycloak, URL для Keycloak: https://auth.mydomain.com
  2. Создано confidential client в той же области с Authorization Enabled ON и Valid redirect URIS: https://api.mydomain.com/*
  3. Создан пользователь
  4. Внутри моего сервера https://api.mydomain.com указывает на 127.0.0.1:5000
  5. 127.0.0.1: 5001 - это "настоящий API"
  6. Сконфигурированный keycloak-gatekeeper с этим config.yaml:
client-id: <MY-API-CLIENT-ID>
client-secret: <SECRET>
discovery-url: https://auth.mydomain.com/auth/realms/<MY-REALM>
enable-default-deny: true
listen: 127.0.0.1:5000
upstream-url: http://127.0.0.1:5001
verbose: true
enable-logging: true
enable-security-filter: true
enable-json-logging: true

Прямо сейчас, если я получаю доступ в браузереhttps://api.mydomain.com Я перенаправлен на https://auth.mydomain.com с просьбой ввести имя пользователя и пароль.Я предоставляю пользователю, созданному в точке 3 и, как и ожидалось, снова перенаправленный на https://api.mydomain.com., пока все хорошо.

Проблема заключается в конфигурации части авторизации: In keycloak -> Clients-> <MY-API-CLIENT-ID> -> Authorization -> Resources Я изменяю политику по умолчанию на Запретить каждый запрос в resource / *, но я могу получить доступ к любому ресурсу (URL) в https://api.mydomain.com, как и прежде.

Я попытался:

  1. Ограничить ролью области (только администраторы могут получить доступ к определенному ресурсу).
  2. Ограничить областью действия.
  3. Отрицать логику в политике.
  4. Ограничить ролью клиента.
  5. Молиться.
  6. Плач.

Конечно, я попробовал каждую комбинацию из вышеперечисленного во вкладке Evaluate на Keycloak и эффективно здесь смоделированную политику показать DENY .

Так что я делаюнеправильно?Кстати, после каждого запроса это журнал от keycloak-gatekeeper:

{"level":"debug","ts":1554936731.4022436,"caller":"keycloak-gatekeeper/middleware.go:337","msg":"access permitted to resource","access":"permitted","email":"testmail@mail.com","expires":201.59779997,"resource":"/*"}

Любые идеи будут высоко оценены.

1 Ответ

0 голосов
/ 11 апреля 2019

Гейткипер не использует Keycloak -> Clients -> <MY-API-CLIENT-ID> -> Authorization -> Resources.

Имеет собственную конфигурацию ресурсов, например ::1004.

resources:
- uri: /admin/*
  methods:
  - GET
  roles:
  - openvpn:vpn-user
  - openvpn:commons-prod-vpn

Документ: https://www.keycloak.org/docs/latest/securing_apps/index.html#configuration-options

...