Architettura scalabile per la soluzione di autenticazione multi-tenant

0

Stiamo valutando due diverse architetture per l'impostazione di KeyCloak per consentire agli utenti di concedere l'accesso ad altri utenti e terze parti agli inquilini all'interno il nostro sistema.

Sto cercando feedback esperti su questi per cercare di risparmiare un po 'di tempo con la sperimentazione.

Primo approccio Registrazione dinamica del client

In questo approccio avremmo diversi servizi statici (server di risorse) che orchestrano l'accesso e quindi ogni titolare è rappresentato tramite un client registrato dinamicamente.

Avremmo quindi un set statico di ruoli (permessi) che vengono assegnati tra l'utente e il client quando gli viene concesso l'accesso.

Quindi l'universo dei ruoli è stato risolto. La proliferazione qui è tra utenti e client o risorse-server e client.

Secondo approccio Generazione dinamica dei ruoli

In questo approccio stiamo considerando la possibilità di generare ruoli (permessi) dinamici per ciascun titolare nel sistema. Stiamo pensando di rispecchiare lo stile URN di AWS in modo che le autorizzazioni sembrino qualcosa di ssl_certificate_key

Seguono la struttura generale urn:service:tenant:permission

per es.

  • urn:service-1:tenant-id-1:read
  • urn:service-1:tenant-id-2:read
  • urn:service-1:tenant-id-1:write
  • urn:service-1:tenant-id-1:admin
  • urn:service-2:tenant-id-1:read

Questo è molto semplice e potente ma abbiamo il potenziale per il JWT di proliferare in dimensioni quando colleghiamo un utente o un servizio a un numero sempre maggiore di locatari.

Ritengo che il primo approccio sia più standard ma ci obbliga ad aggiungere più complessità al sistema poiché dobbiamo gestire la registrazione dei client e guidare l'utente attraverso il flusso della delega di autenticazione ogni volta che si desidera concedere a un server l'accesso a un cliente che possiedono. Il secondo approccio è semplice, ma tecnicamente meno conforme agli standard.

Abbiamo valutato API di autorizzazione (basato su UMA ) per questo, ma non è adatto al momento in quanto vi sono numerosi problemi irrisolti su KeyCloak che hanno da affrontare.

Che cosa tendono a fare le persone nel mondo reale per affrontare questo problema? Il nostro sistema ha un numero illimitato di inquilini, ma realisticamente ogni utente sarà associato a poche decine al massimo. Le applicazioni di terze parti (che sono tutti client dinamici) saranno potenzialmente associate a centinaia o migliaia di altri client.

    
posta Yuriy Yunikov 16.03.2018 - 22:04
fonte

0 risposte

Leggi altre domande sui tag