Spring security - Autoryzacja na poziomie obiektów domenowych

0

Witam,

Chciałbym uzyskać jakiś wskazówek dotyczących implementacji Spring Security na poziomie dostępu do obiektów domenowych. O co mi chodzi - Załóżmy, że posiadam w aplikacji prostą metodkę restową:
/api/users/1 (PUT)
Chciałbym umożliwić edycję danych konta tylko ale wyłącznie swojego konta (Czyli aby aktualnie uwierzytelniony user o identyfikatorze 1 nie mógł wywołac usługi /api/users/2/ (PUT)).
Inny przykład, pobieranie jakiś danych z serwera:
/api/articles/1 (GET)
Tutaj analogicznie, chciałbym umożliwić użytkownikowi pobieranie tylko niektórych artykułów.

Czy ktoś zna jakieś ciekawe rozwiązanie takiego zagadnienia? Jak do tego podejść? Jak wykorzystać tutaj gotowe mechanizmy Spring Security?

To co mi przychodzi aktualnie do głowy to przechowywanie w bazie tabel z rekordami definiującymi dostępy do konkretnych zasobów - czyli pary USER_ID i OBJECT_ID (np identyfukator artykułu) a następnie weryfikowanie dostępu do zasobu podczas wywoływania metody - To oczywiście w wielkim skrócie ale chodzi mi o koncepcje, co o tym sądzicie?

0

Istnieje takie coś jak Spring Security ACL i do tego to w teorii służy, ale ja polecam robić to ręcznie i ifowac ręcznie wewnątrz service.

0

coś ala @PreAuthrize("object.ownerId == principal.id"). Ale pewnie na filtrze też da rady

1

Aspektami nie chcesz? W Springu łatwo to włączyć, nie trzeba żadnego instrumentowania. Nie będziesz musiał zatruwać kodu biznesowego uprawnieniami. Rzucisz sobie z aspektu wyjątek, a złapiesz w kontrolerze.

0

Dzięki za wszystkie pomysły, myślę że na razie wypróbuje mechanizm z aspektami ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1