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.