Megadva a tekintély szerepét a tavaszi biztonságban
1. Áttekintés
Ebben a rövid cikkben elmagyarázzuk a finom, de jelentős különbség a Szerep és a Engedélyezett tavaszi biztonságban. A szerepekről és a jogosultságokról részletesebb információkat itt talál.
2. Engedélyezett
A tavaszi biztonságban megtehetjük gondoljon mindegyikre Engedélyezett mint egyéni kiváltság. Ilyen lehet például READ_AUTHORITY, WRITE_PRIVILEGE, vagy akár CAN_EXECUTE_AS_ROOT. Fontos megérteni, hogy a név önkényes.
Ha a Engedélyezett közvetlenül, például egy hasonló kifejezés használatával hasAuthority (’READ_AUTHORITY’), mi vagyunk finom hozzáférés korlátozása.
Amint valószínűleg összegyűjthetjük, utalhatunk a hatóság használva kiváltság is.
3. Hatóság szerepe
Hasonlóképpen a tavaszi biztonságban is gondoljon mindegyikre Szerepe as durvaszemcsés Engedélyezett amelyet a Húr és előtaggal:SZEREP“. Ha a Szerep közvetlenül, például egy kifejezés segítségével hasRole („ADMIN”), durván részletezve korlátozzuk a hozzáférést.
Érdemes megjegyezni, hogy az alapértelmezett „SZEREP" az előtag konfigurálható, de ennek elmagyarázása meghaladja a cikk kereteit.
E kettő közötti alapvető különbség az a szemantika, amelyet a funkció használatához csatolunk. A keretrendszer esetében a különbség minimális - és alapvetően pontosan ugyanúgy foglalkozik ezekkel.
4. Szerep konténerként
Most, hogy láttuk, hogyan használja a keretrendszer a szerep koncepcióról, beszéljünk gyorsan egy alternatíváról is - és ez az szerepkörök használata a jogosultságok / privilégiumok tárolójaként.
Ez egy magasabb szintű megközelítés a szerepkörökhöz - így azok inkább üzleti szemléletűek, nem pedig megvalósítás-központúak.
A tavaszi biztonsági keretrendszer nem ad útmutatást a koncepció használatának módjáról, ezért a választás teljes egészében a megvalósításra vonatkozik.
5. Tavaszi biztonsági konfiguráció
A hozzáférés korlátozásával demonstrálhatunk egy részletezett engedélyezési követelményt / védett hatóság felhasználókkal a READ_AUTHORITY.
A hozzáférés korlátozásával bizonyíthatunk durva részletességű engedélyezési követelményt / protectedbyrole felhasználókkal a ROLE_USER.
Konfiguráljunk egy ilyen esetet a biztonsági konfigurációnkban:
A @Orride védett void konfiguráció (HttpSecurity http) az {// ... .antMatchers ("/ protectedbyrole"). HasRole ("USER") .antMatchers ("/ protectedbyauthority"). HasAuthority ("READ_PRIVILEGE") //. ..}
6. Egyszerű Data Init
Most, hogy jobban megértettük az alapvető fogalmakat, beszéljünk néhány beállítási adat létrehozásáról az alkalmazás indításakor.
Ez természetesen nagyon egyszerű módja annak, hogy a fejlesztés során néhány előzetes tesztfelhasználóval talajra kerüljön - nem úgy, ahogyan a termelés során kell kezelnie az adatokat.
Meghallgatjuk a kontextusfrissítési eseményt:
@Override @Transactional public void onApplicationEvent (ContextRefreshedEvent event) {MyPrivilege readPrivilege = createPrivilegeIfNotFound ("READ_PRIVILEGE"); MyPrivilege writePrivilege = createPrivilegeIfNotFound ("WRITE_PRIVILEGE"); }
A tényleges megvalósítás itt nem igazán számít - és általában az Ön által alkalmazott perzisztencia-megoldástól függ. A lényeg: továbbra is fenntartjuk azokat a hatóságokat, amelyeket a kódban használunk.
7. UserDetailsService
Megvalósításunk UserDetailsService itt történik a hatósági feltérképezés. Miután a felhasználó hitelesített, a getAuthorities () metódus kitölti és visszaadja a UserDetails tárgy:
privát gyűjtemény getAuthorities (Gyűjtési szerepkörök) {List hatóságok = új ArrayList (); for (Szerepszerep: szerepkörök) {hatóságok.add (új SimpleGrantedAuthority (szerep.getName ())); role.getPrivileges (). stream () .map (p -> new SimpleGrantedAuthority (p.getName ())) .forEach (hatóságok :: add); } visszatérési hatóságok; }
8. A példa futtatása és tesztelése
Kivitelezhetjük a példát RolesAuthoritiesApplication Java alkalmazás, megtalálható a GitHub projektben.
A szerepalapú engedélyezés működésének megtekintéséhez:
- Hozzáférés // localhost: 8082 / protectedbyrole
- Hitelesítse mint [e-mail védett] (a jelszó „Felhasználó”)
- Vegye figyelembe a sikeres engedélyezést
- Hozzáférés // localhost: 8082 / protectedbyautity
- Vegye figyelembe a sikertelen engedélyezést
A hatóságon alapuló engedélyezés működésében való megjelenéshez ki kell jelentkeznünk az alkalmazásból, majd:
- Hozzáférés // localhost: 8082 / protectedbyautity
- Hitelesítés [email protected] / admin néven
- Vegye figyelembe a sikeres engedélyezést
- Hozzáférés // localhsot: 8082 / protectedbyrole
- Vegye figyelembe a sikertelen engedélyezést
9. Következtetés
Ebben a gyors bemutatóban megvizsgáltuk a finom, de jelentős különbséget az a között Szerep és a Engedélyezett tavaszi biztonságban.