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.