Ich habe die unten Endpunkt Muster in meiner AnwendungVerwenden AbstractAuthenticationProcessingFilter für mehrere URLs
- /Token - für alle zugänglich
- /rest/securedone/** - erfordert Authentifizierung
- /rest/securedtwo/** - erfordert Authentifizierung
- /rest/ungesicherten/** - erfordert keine Authentifizierung
Ab sofort I Ich kann auf den/token-Endpunkt zugreifen. Aber/rest/secondedone/** und/rest/ungesichert/** 401 zurückgeben, wenn kein Token (JWT) gesendet wird. Es ist meine Absicht zu sichern/Ruhe/secondedone/** und das ist in Ordnung/Ruhe/ungesichert/** sollte zugänglich sein.
Meine httpSecurity Config ist wie folgt:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf().disable()
.authorizeRequests()
.antMatchers("/token").permitAll()
.antMatchers("/rest/secured/**").authenticated()
.and()
.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.addFilterBefore(authenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
http.headers().cacheControl();
}
und meine AbstractAuthenticationProcessingFilter erweiterte Klasse ist wie folgt:
public class MyAuthenticationTokenFilter extends AbstractAuthenticationProcessingFilter {
private static Logger log = LoggerFactory.getLogger(MyAuthenticationTokenFilter.class);
public MyAuthenticationTokenFilter() { super("/rest/**"); }
@Override
public Authentication attemptAuthentication(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws AuthenticationException, ServletException {
//authentication handling code
}
@Override
protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
super.successfulAuthentication(request, response, chain, authResult);
chain.doFilter(request, response);
}
}
Kann jemand bitte meine Figur aus der unten helfen:
Wann wird der MyAuthenticationTokenFilter verwendet? Für welche URL wird es aufgerufen? Wie kommt es, dass/rest/ungesichert/** ebenfalls eine Authentifizierung erwartet? Es passiert sogar, wenn ich explizit .antMatchers ("/ rest/secured/**"). PermitAll() sage. I
Kann ich mehrere URL-Muster in meinem Super-Aufruf (defaultFilterProcessingUrl) im MyAuthenticationTokenFilter-Konstruktor angeben? Zum Beispiel, wenn ich eine andere URL wie/api/secured/habe, wie kann ich meinen MyAuthenticationTokenFilter für/api/secured/ Anfragen aufgerufen bekommen? Ich brauche keine andere Authentifizierungsbehandlung, daher möchte ich diesen Filter wiederverwenden.
Dank einer Tonne für die vereinfachte Erklärung und Ihre Zeit. Ich denke, ich habe jetzt ein verfestigteres Verständnis davon. – worldbeater