Voglio configurare un semplice provider OAuth2 basato su spring-boot, spring-security e spring-oauth2.Provider oauth2 di sicurezza stateless spring
Ho ottenuto tutto ciò che funziona su una singola macchina di istanza: per un'autorizzazione OAuth2, l'utente viene inviato a /oauth/authorize
. La maggior parte degli utenti non ha effettuato l'accesso, quindi viene reindirizzata a /login
per la sicurezza di primavera e quindi torna t /oauth/authorize
per completare l'autorizzazione.
Nella configurazione predefinita, spring security imposta un cookie nel browser dell'utente con un id di sessione e memorizza i dati di sessione in memoria.
public static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
}
[...]
Al fine di consentire il bilanciamento del carico e implementazioni blu-verde senza perdere le sessioni utente, (credo) che devo effettuare le seguenti operazioni:
- Disattiva sessioni lato server - per un'API questo è solo responsabile dell'autorizzazione OAuth2 Non penso sia necessario avere un database condiviso per le sessioni.
- Invece, abilitare un cookie remember-me contenente l'autenticazione dell'utente, temporanea durante l'autorizzazione.
- Conservare l'URL di reindirizzamento per il
/login
reindirizzamento in un luogo diverso- E 'possibile conservare questo in forma di accesso o biscotto utente? O quale sarebbe un'alternativa "senza sessione"?
- Disabilita CSRF (io so come farlo e OAuth2 ha auth_codes che penso hanno uno scopo simile. Solo per completezza.)
fa questo approccio ha senso? Quali cambiamenti sono necessari?
Quello che ho fatto grosso modo è: (a) disabilitato CSRF (b) archivio URL di reindirizzamento nel cookie. Ho solo bisogno di una memoria per i codici oauth2. – Jan