Keycloak, Nestjs — ResourceGuard всегда приводит к ошибке 403 Forbidden?
У меня есть REST API NestJS. Я пытаюсь использовать Keycloak в качестве службы авторизации. Я хочу защитить конечные точки моего REST API с помощью ресурсов, областей действия и разрешений.
Проблема в том, что я получаю 403 Forbidden Resource Error при каждом запросе. Я пытаюсь объяснить всю свою конфигурацию с большим количеством изображений. Я что-то упустил или я что-то неправильно понял?
Конфигурация маскировки ключей
Оценка Для проверки моей конфигурации я использую внутренний инструмент оценки. У меня есть пользователь: « testcustomer », который является членом группы: Testproject. Поэтому он должен иметь доступ к ресурсу. Оценка показывает, что он работает правильно:
ОТДЫХА API:
В моем REST API NestJs я использую пакет nest-keycloak-connect.
Это конфигурация KeycloakModule:
Мой Тест-Контроллер
Мое понимание пакета: когда пользователь (в данном случае testcustomer) отправляет запрос к API на следующий URI: «http://localhost:3002/api/test/test», ресурс из Keycloak связан с это. И testcustomer уполномочен вызывать эту конечную точку. Другие пользователи, не входящие в группу Testproject, получат ответ 403 Forbidden.
Проблема в том, что я всегда получаю ошибку 403, независимо от того, находится ли мой пользователь в группе, и даже не имеет значения, существует ли вообще ресурс в Keycloak.
Примечание. Работает общая аутентификация или даже авторизация через роли.
1 ответ
благодаря владельцу пакета я получил ответ:
https://github.com/ferrerojosh/nest-keycloak-connect/issues/137
Его ответ/решение:
Ах, я думаю, это из-за того, что у ваших прицелов есть характер.
Если вы думаете о файле в официальной библиотеке:https://github.com/keycloak/keycloak-nodejs-connect/blob/f8e397cd7a1a763db5a45a07c3c3e40fec5cf8f2/middleware/enforcer.js#L18-L33
Он отделяет разрешение, котороеpermission:scope
просто расколом.
Здесь произошло то, что библиотека андерилинга получает строкуFile:files:read
и он отправляется исполнителю keycloak в качестве ресурсаFile
с размахомfiles
.
тлдр; решение состоит в том, чтобы удалить:
персонаж в вашей области. Если это не сработает для вас, вы можете подать заявку наkeycloak-connect
команда, так как я не контролирую это поведение.