Keycloak Gatekeeper не блокирует запросы
Я пытаюсь использовать keycloak + keycloak-gatekeeper для авторизации в личном API: api.mydomain.com
, до сих пор я сделал:
- Создано царство
MY-REALM
в keycloak URL для keycloak - https://auth.mydomain.com/ - Создано
confidential client
в той же сфере сAuthorization Enabled
ИValid redirect URIS
: https://api.mydomain.com/ * - Создан пользователь
- Внутри моего сервера https://api.mydomain.com/ указывает на 127.0.0.1:5000
- 127.0.0.1:5001 - это "настоящий API"
- Настроил 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/ как и раньше.
Я пытался:
- Ограничить ролью области (только администраторы могут получить доступ к определенному ресурсу).
- Ограничить по объему.
- Отрицайте логику в политике.
- Ограничить ролью клиента.
- Молиться.
- Плач.
Конечно, я попробовал каждую комбинацию вышеупомянутого в 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