Tavaszi biztonság - testreszabhatja a 403 Tiltott / Hozzáférés megtagadva oldalt
1. Bemutatkozás
Ebben a cikkben megmutatjuk, hogyan kell testre szabhatja a hozzáférés megtagadva oldalt a Spring Security projektben.
Ez a Spring Security konfigurációjával vagy a webalkalmazás konfigurációjával érhető el web.xml fájl.
A fennmaradó szakaszokban alaposabban megvizsgáljuk ezeket a lehetőségeket.
2. Egyéni JSP
Amikor egy felhasználó megkísérel egy olyan oldalt elérni, amely csak a nem szerepkörökre korlátozódik, az alkalmazás 403 állapotkódot ad vissza, ami azt jelenti Hozzáférés megtagadva.
Annak érdekében, hogy a 403 tavaszi állapotválasz oldalt egyedi oldalra cserélje, először hozzunk létre egy JSP nevű fájl accessDenied.jsp:
Sajnos nincs engedélye ennek az oldalnak a megtekintésére.
Kattintson a gombra itt térjen vissza a kezdőlapra.
3. Tavaszi biztonsági konfiguráció
Alapértelmezés szerint a Spring Security rendelkezik egy ExceptionTranslationFilter meghatározta, hogy melyik típusú kivételt kezeli AuthenticationException és AccessDeniedException. Ez utóbbi egy úgynevezett tulajdonságon keresztül történik accessDeniedHandler, amely a AccessDeniedHandlerImpl osztály.
Annak érdekében, hogy ezt a viselkedést a fent létrehozott saját oldalunk használatához testre szabhassuk, felül kell írnunk a ExceptionTranslationFilter osztály. Ez történhet Java vagy XML konfigurációval.
3.1. Hozzáférés megtagadva oldal
Java használatával, testreszabhatjuk a 403 hibakezelési folyamatot a accessDeniedPage () vagy accessDeniedHandler () mód miközben konfigurálja a HttpBiztonság elem.
Hozzunk létre egy hitelesítési konfigurációt, amely korlátozza a “/ Admin / **”URL-ek a ADMIN szerepet, és a szokásunkhoz igazítja a hozzáférés megtagadott oldalt accessDenied.jsp oldal:
A @Orride védett void configure (végső HttpSecurity http) a Kivételt dobja {http // ... .és () .exceptionHandling (). AccessDeniedPage ("/ accessDenied.jsp"); }
Vizsgáljuk meg a hozzáférés megtagadva oldal megfelelő XML konfigurációját:
3.2. Hozzáférés megtagadva kezelő
A hozzáférés megtagadott kezelő használata egy oldal helyett azzal az előnnyel jár, hogy meghatározhatjuk az egyedi logikát, amelyet végre kell hajtani, mielőtt átirányítanánk a 403-as oldalra. Ezért, létre kell hoznunk egy osztályt, amely megvalósítja a AccessDeniedHandler felület és felülírja a fogantyú() módszer.
Hozzunk létre egy egyéni AccessDeniedHandler osztály, amely figyelmeztető üzenetet naplóz minden elutasított kísérletről, amely tartalmazza a kísérletet végző felhasználót és a védett URL-t, amelyhez hozzáférni próbál:
public class CustomAccessDeniedHandler megvalósítja az AccessDeniedHandler {public static final Logger LOG = Logger.getLogger (CustomAccessDeniedHandler.class); A @Orride public void handle (HttpServletRequest kérés, HttpServletResponse válasz, AccessDeniedException exc) az IOException, a ServletException {Authentication auth = SecurityContextHolder.getContext (). GetAuthentication (); if (auth! = null) {LOG.warn ("Felhasználó:" + auth.getName () + "megpróbálta elérni a védett URL-t:" + request.getRequestURI ()); } response.sendRedirect (request.getContextPath () + "/ accessDenied"); }}
A biztonsági konfigurációban meghatározzuk a babot és beállítjuk a szokást AccessDeniedHandler:
@Bean public AccessDeniedHandler accessDeniedHandler () {return new CustomAccessDeniedHandler (); } // ... .exceptionHandling (). accessDeniedHandler (accessDeniedHandler ());
Ha konfigurálni akarjuk a CustomAccessDeniedHandler osztály fent definiált XML használatával, a konfiguráció kissé másképp fog kinézni:
4. Az alkalmazás konfigurálása
A megtagadott hozzáférési hiba kezelése a web.xml egy webalkalmazás fájlja egy hiba-oldal címke. Ez két alcímkét tartalmaz hibakód, - amely meghatározza az elfogandó állapotkódot, és - elhelyezkedés, amely azt az URL-t jelöli, amelyre a felhasználót átirányítják a hibakód felmerülése esetén:
403 / accessDenied
Ha egy alkalmazás nem rendelkezik a web.xml fájl, mint a Spring Boot esetében, a tavaszi kommentárok jelenleg sem nyújtanak pontos alternatívát a hiba-oldal címke. A tavaszi dokumentáció szerint ebben az esetben az ajánlott módszer a módszerek használata accessDeniedPage () és accessDeniedHandler () a 3. szakaszban mutatjuk be.
5. Következtetés
Ebben a gyors cikkben részletesen bemutattuk a hozzáférés megtagadása hiba kezelésének különféle módjait egy egyedi 403-as oldal használatával.
A cikk teljes forráskódja megtalálható a GitHub projektben.