Accordare in modo sicuro un utente autenticato attraverso i microservizi

1

Su una piattaforma che segue il framework OAuth 2.0 per l'autorizzazione e un'architettura basata su microserivce, qual è un modo sicuro per passare un utente da un microservizio a un altro sulla stessa piattaforma senza dover autenticare di nuovo l'utente?

Contesto dettagliato

Supponiamo che un utente tenti di registrarsi per un servizio sulla piattaforma (chiama questo servizio Microservice A), quindi come parte di Autorizzazione concessione flusso l'utente (proprietario della risorsa) deve essere autenticato. Supponendo che questo sia fatto con successo, alla fine viene emesso un token di accesso e l'utente è autorizzato a procedere. Supponiamo ora che l'utente debba essere reindirizzato su un altro microservizio (chiamare questo servizio Microservice B) sulla stessa piattaforma per completare un diverso percorso aziendale. Il token di accesso (JWT firmato) è attualmente accessibile solo da Microservice A. Il token di accesso non viene memorizzato dal server di autorizzazione (può essere, se necessario, e se ciò è cosa sicura da fare). Per consentire all'utente di accedere a Microservice B, quale dovrebbe essere la procedura da seguire per concedere l'autorizzazione al client per consentire all'utente di procedere con l'accesso ai percorsi degli utenti di Microservice B senza dover autenticare nuovamente l'utente?

Soluzione possibile

Un'idea sarebbe quella di delegare tutte le richieste di reindirizzamento a qualsiasi microservizio sulla stessa piattaforma al server di autorizzazione. La richiesta delegata avrebbe la JWT firmata e quindi il server delle autorizzazioni può interrogare l'autenticità della JWT e quindi sapere quale utente è autenticato. Se ok, il server di autorizzazione può rilasciare un nuovo codice di autorizzazione e quindi reindirizzare al microservizio di destinazione come per il flusso di reindirizzamento nel flusso di concessione di autorizzazione OAuth. Il microservizio di destinazione può quindi richiedere un token di accesso e quindi completare la fase di autorizzazione. Con questa soluzione si presume che l'utente sia autenticato poiché è stato fornito un JWT valido.

    
posta Mika'il 20.12.2018 - 11:27
fonte

0 risposte

Leggi altre domande sui tag