Ho un metodo fissato con @PreAuthorizeSpring Security: qual è il modo giusto per chiamare il metodo protetto con @PreAuthorize nell'attività in background?
@PreAuthorize("hasRole('ROLE_ADMIN') and (#action.userId != principal.id)")
public void execute(EditAction action)
Ora ho bisogno di chiamare questo metodo da un task in background. Se ho semplicemente eseguire questo codice - prendo un'eccezione:
AuthenticationCredentialsNotFoundException: Un oggetto di autenticazione non è stato trovato nel SecurityContext
Sembra, ho bisogno di impostare alcuna autenticazione a SecurityContext. Posso:
- Scrivere alcuni AuthenticationToken personalizzati per le attività in background.
- Utilizzare UsernamePasswordAuthenticationToken con un utente falso.
- Non utilizzare metodi protetti nelle attività in background.
- C'è altro?
Qual è la strada giusta?
puoi mostrare qualche codice? Come lo chiami? –
Questa non è una chiamata trasparente: stiamo utilizzando lo schema di comando. Il metodo protetto è un metodo di Handler. Per "task in background" intendo un jms MessageListener o un metodo @Scheduled. Sto chiamando il metodo sicuro in qualche modo, come lo chiamo processando servlet - inviando un'Azione. – Popandopolos