Sono solo un principiante in Spring Security, ma mi piacerebbe sapere che è possibile configurare il keycloak in modo da poter utilizzare , @PostAuthorize
, @Secured
e altre annotazioni. Per esempio, ho configurato la Primavera di sicurezza keycloak-spring-security-adapter
e nel mio semplice webapp primavera Resto in modo da avere accesso a scopo principale nel mio controller, in questo modo:Utilizzo di annotazioni di sicurezza a molla con il tasto chiave
@RestController
public class TMSRestController {
@RequestMapping("/greeting")
public Greeting greeting(Principal principal, @RequestParam(value="name") String name) {
return new Greeting(String.format(template, name));
}
...
}
Ma quando provo questo (solo un esempio , in realtà io voglio eseguire un'espressione EL personalizzato prima autorizzazione):
@RestController
public class TMSRestController {
@RequestMapping("/greeting")
@PreAuthorize("hasRole('ADMIN')")
public Greeting greeting(Principal principal, @RequestParam(value="name") String name) {
return new Greeting(String.format(template, name));
}
...
}
ottengo un'eccezione:
org.springframework.security.authentication. AuthenticationCredentialsNotFoundException: Un oggetto di autenticazione non è stato trovato nel SecurityContext
Nel mio config sicurezza primavera ho attivato la sicurezza metodo globale:
cosa ho bisogno di fare questo le annotazioni di sicurezza a molla funzionano? È possibile utilizzare questa annotazione in questo contesto?
La risposta era un po 'di tempo fa, ma ho avuto qualche problema simile con Spring Security e Keycloak. Nella mia applicazione Spring Boot ho configurato l'adattatore ma non ho potuto usare '@PreAuthorize (" hasAuthority ('user') ")'. Se è stata inviata una richiesta, l'annotazione non ha avuto alcun effetto. L'ho risolto ora aggiungendo '@EnableGlobalMethodSecurity (prePostEnabled = true)' alla mia configurazione di sicurezza. – hesch