Отрицательная логика для политики UMA в Keycloak

#keycloak #keycloak-services

#keycloak #keycloak-сервисы

Вопрос:

Я хочу управлять политиками для своих ресурсов в Keycloak через конечную точку, совместимую с UMA. Итак, я создал ресурс profile с областями view_users, invite_users, edit_users .

Затем я перешел к созданию политик с использованием API политики.

 ## POST
{
    "name": "can_view_users",
    "logic": "NEGATIVE",
    "decisionStrategy": "AFFIRMATIVE",
    "clients": ["uma_postman"],
    "scopes": ["view_users"],
    "roles": ["uma_postman/lg_admin", "uma_postman/sales", "uma_postman/customer_admin"],
    "users": ["37ae8b1e-f1b0-4e72-b6ac-5ad1e49f89d7", "3627cb69-23ed-474d-abec-8f31b230b730"]
}
  

Я могу запросить это ( GET http://localhost:8080/auth/realms/ng_whs/authz/protection/uma-policy ), и кажется, что политика создана правильно.

введите описание изображения здесь

Теперь я понимаю, что, поскольку стратегия принятия решений является УТВЕРДИТЕЛЬНОЙ, а логика ОТРИЦАТЕЛЬНОЙ, для любой из вышеупомянутых ролей — lg_admin, sales, customer_admin или пользователя с указанными выше идентификаторами, мне не должен быть разрешен доступ к ресурсу.

Однако, когда я запрашиваю как пользователь с указанной выше ролью или идентификатором, я все еще не получаю отказ в доступе. введите описание изображения здесь

Теперь, когда я меняю логику на ПОЛОЖИТЕЛЬНУЮ для той же политики, ответ остается тем же. Я что-то здесь упускаю? Любая помощь была бы действительно оценена. 🙂

Я следовал инструкциям отсюда —keycloak.org/docs/latest/authorization_services/#_service_authorization_uma_policy_api

Комментарии:

1. Прошу прощения. У меня есть вопрос, на который не нужно отвечать. Как получить разрешение от Keycloak? В документации сказано запросить сервер ресурсов. curl -X GET http://${host}:${port}/my-resource-server/resource/1bfdfe78-a4e1-4c2d-b142-fc92b75b986f . Могу получить разрешение, подобное этому HTTP/1.1 401 Unauthorized WWW-Authenticate: UMA realm="${realm}", as_uri="https://${host}:${port}/auth/realms/${realm}", ticket="016f84e8-f9b9-11e0-bd6f-0021cc6004de" но мой сервер ресурсов case и сервер аутентификации — Keycloak.