Autorizzazione dell'utente con microservizi


12

I microservizi dovrebbero essere responsabili della gestione della propria autorizzazione o pensi che sia meglio disporre di un servizio di autorizzazione separato condiviso da tutti o da un sottoinsieme (all'interno dello stesso dominio aziendale) di microservizi?

Per me quest'ultimo ha più senso in quanto rende più semplice applicare le modifiche, applicare le politiche; è ASCIUTTO, ecc. Tuttavia, può facilmente sfuggire di mano a tutti i tipi di servizi che scaricano le loro regole in un unico posto, e anche preoccupato per le spese generali della rete.

qualche idea?

Risposte:


7

Vorrei utilizzare un sistema di autenticazione unificato centrale e disporre di autorizzazioni / statistiche separate per ciascun microservizio (una specie di come non riesco ancora a votare su questo sito di scambio di stack ma posso overflow dello stack mentre utilizzo il sistema di autenticazione di scambio di stack centrale). Uno dei miei progetti attuali coinvolgerà questo approccio nel prossimo futuro, il che sarà bello; il precedente lavoro di sviluppo prevedeva la creazione di un sistema conforme HIPPA, che richiedeva un secondo livello di autorizzazione / autenticazione, ed è una seccatura fastidiosa per le autorizzazioni daisy chain da componenti del sistema legalmente separati ma funzionalmente inseparabili. Il processo di debug comporta molta meno gioia di un semplice login oauth o di un API con intestazioni appid e x-auth.

Quale utilizzare dipende dai requisiti specifici di una tabella di marcia per lo sviluppo, ma sceglierei l'approccio più semplice, ove possibile, per evitare costi eccessivi e tempi / sforzi di sviluppo.


Usiamo OAuth2 per l'autenticazione e mi piacerebbe seguire lo stesso principio - ovvero disporre di un servizio centrale con un'unica responsabilità ben definita - per l'autorizzazione, piuttosto che duplicare la funzionalità e la logica di dispersione tra i servizi. Per me è una violazione del confine del dominio. Sono d'accordo sul fatto che ciò significa che dovremo risolvere l'isolamento delle regole di servizio (ala stackoverflow, programmatori ecc.).
morcmarc

2
Potresti potenzialmente avere autorizzazioni globali che vengono sovrascritte da autorizzazioni specifiche del servizio, utili se una manciata di microservizi core utilizza le stesse autorizzazioni. Le autorizzazioni specifiche del microservizio dovrebbero probabilmente essere archiviate nell'infrastruttura dell'app per quel microservizio per evitare potenziali problemi di prestazioni per il servizio di autenticazione centrale.
Jonathan Voss,

4

Ogni microservizio non dovrebbe avere la propria autenticazione, ma deve fare la propria autorizzazione.

fonte

E questo ha perfettamente senso. Suppongo che non vi siano dubbi sull'autenticazione centrale. Ma l'autorizzazione è piuttosto confusa.

Considerando che il numero di micro-servizi può crescere fino a centinaia, migliaia, Un servizio di autorizzazione centrale dovrebbe essere responsabile solo per elencare le autorizzazioni, ma non convalidare tali autorizzazioni. Il singolo micro-servizio potrebbe dover affrontare un approccio diverso per convalidare l'autorizzazione.

Questo servizio di autorizzazione centrale, potrebbe essere necessario ottenere modelli da servizi diversi e approcciarsi in modo diverso per prendere una decisione, all'inizio può sembrare facile e carino. Ma potrebbe essere il caos più tardi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.