#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.