Keycloak Gatekeeper не блокирует запросы

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

  1. Создано царство MY-REALM в keycloak URL для keycloak - https://auth.mydomain.com/
  2. Создано confidential client в той же сфере с Authorization Enabled И 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/. Все идет нормально.

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

Я пытался:

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

Конечно, я попробовал каждую комбинацию вышеупомянутого в Evaluate Вкладка на клавиатуре и эффектно показанная здесь смоделированная политика показа 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 ответ

Решение

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

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

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

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

Другие вопросы по тегам