abbiamo un lavoro Quartz/Spring Batch, che per scopi di registrazione di controllo vorremmo averlo "autenticato" come utente di sistema. Alcuni dei nostri metodi si basano sul recupero di SecurityContext per fare ciò. Le modalità di esecuzione di questo lavoro sono attendibili (o autenticate). Non vogliamo utilizzare effettivamente una password o un altro token (poiché il processo è in pratica generato sempre da quarzo).Come posso autenticare un utente di sistema per i processi pianificati in primavera?
Ho provato questo
private void authenticate() {
UserDetails admin = userDetailsService.loadUserByUsername("admin");
RunAsUserToken token = new RunAsUserToken(
UUID.randomUUID().toString(), admin, admin.getAuthorities(), null , null);
Authentication user = authenticationManager.authenticate(token);
if (user.isAuthenticated()) {
SecurityContext sc = new SecurityContextImpl();
sc.setAuthentication(user);
SecurityContextHolder.setContext(sc);
}
}
ma portato in
org.springframework.security.authentication.ProviderNotFoundException: No AuthenticationProvider found for org.springframework.security.access.intercept.RunAsUserToken
e io non sono sicuro di quello che alcuni dei parametri RunAsUserToken do (ad esempio chiave) o che cosa dovrei dandogli nei riguardi alle credenziali.
Come posso autenticare o altrimenti impostare il contesto di sicurezza come se fosse stato autenticato come questo utente?
Hai guardato 'SecurityContextHolder.setContext()' –
@JohnR sì, ma non sono sicuro di come ottenere correttamente il contesto creato con l'utente come ho bisogno di – xenoterracide