У меня есть приложение Spring Boot, и я использую службы авторизации Keycloak.
Допустим, у меня есть отчет с именем Report1
с идентификатором 1
, созданный user1
.
URL-адрес для доступа к ресурсу будет /app/{reportId}
. Чтобы получить доступ к отчету, нужно использовать /app/1
. Я хочу ограничить доступ к этому URL-адресу только владельцу / создателю отчета (user1
). Так как это своего рода URL-адрес "динамического c", а идентификатор заранее не определен, я не могу создать ресурс со статическим c URL-адресом (app/1
) в Keycloak.
Я бы хотел бы ввести политику JS, например:
var context = $evaluation.context;
var identity = context.identity;
var permission = $evaluation.permission;
var resource = <Report1>
if (resource.<created_by_user_id> == identity.id) {
$evaluation.grant();
}
Из приведенного выше кода:
Report1
должно определяться динамически из БД created_by_user_id
- это атрибут Report1, который содержит user1
Есть идеи?