David. Potresti dare un'occhiata a un articolo che ho scritto sulla sicurezza dei servizi di spring cloud. Il team di primavera ha in gran parte lasciato questo argomento allo sviluppatore come dovrebbe essere, dal momento che le implementazioni di sicurezza variano notevolmente tra le organizzazioni. Questo esempio utilizza l'autenticazione di base sui server eureka e config.
http://www.baeldung.com/spring-cloud-securing-services
Alcune piccole takeaway dovrebbero essere: l'autenticazione deve essere definito sui server di configurazione e di scoperta di distanza da qualsiasi altro tipo di autenticazione che avete per il resto del sistema. Questi due server devono gestire la propria autenticazione perché spesso è necessario che siano in esecuzione prima che un server di autenticazione possa avviarsi (dal momento che richiama la configurazione da servizio di configurazione e registri con il servizio di rilevamento).
Il servizio per la comunicazione di servizio è una bestia diversa. La domanda che devi porci, come sta dicendo David, è che stai correndo con i tuoi servizi con la sicurezza ip, sono esposti a tutto il web, dove avviene l'autenticazione nella tua app. Senza queste domande è difficile dare consigli specifici.
Alcuni consigli generali in questo settore potrebbe essere:
Se i servizi sono in esecuzione dietro un firewall IP è possibile specificare un'intestazione unico che autenticare qualsiasi servizio in arrivo in questo modo non si fa. davvero bisogno di specificare le autorizzazioni per la rete interna solo identificando ogni servizio sarà sufficiente. Puoi persino elencare in bianco gli indirizzi IP specifici da consentire sempre.
Se si eseguono questi servizi esposti al Web, è possibile che si desideri indirizzare tutto il traffico al gateway (questo dovrebbe anche essere il luogo in cui avviene l'autenticazione per la propria app). Se si ottiene un 403, è necessario eseguire un accesso programmatico e riprovare la richiesta con l'id di sessione. Se si configura il sistema con spring-session, ogni servizio preleverà automaticamente i dettagli di autenticazione di quel servizio.
Queste sono solo due delle numerose possibilità. Non sono esattamente sicuro di quanto sei a tuo agio nello scrivere queste configurazioni di sicurezza, quindi se vuoi ulteriore assistenza chiarisci le tue domande in uno scenario e cercherò di scrivere una soluzione generica per il tuo caso d'uso.
1. Eureka Server può essere protetto utilizzando Spring Security. Non abbiamo nulla configurato automaticamente. La sicurezza di eureka è attualmente un esercizio per gli sviluppatori. 2. Per quanto riguarda Feign, è possibile collegare 'RequestInterceptor's che può richiamare l'autenticazione da qualsiasi luogo e aggiungerla alla richiesta successiva. Di nuovo, questo è un esercizio, non lo facciamo automaticamente. – spencergibb
@spencergibb Ri 1: La sicurezza sul server ha senso ed è semplice, ma come possiamo consentire ai client di conoscere la suddetta sicurezza? La risposta 2 è perfetta :) grazie –
beh questa è una grande domanda con i servizi in generale. È possibile crittografare i server di configurazione nel server di configurazione, quindi come si può garantire ciò? Potresti usare i certificati. Potresti usare la sicurezza della rete. puoi inserire le credenziali nelle variabili di ambiente. Non abbiamo risolto quel problema. – spencergibb