Account globali nel sistema di autorizzazione multi-tenant

2

Il nostro sistema è fondamentalmente una configurazione multi-tenant, in cui ogni cliente gestisce un database separato con i propri dati e utenti. Il sistema di autenticazione al login emette un token di autenticazione che viene restituito all'utente all'accesso; la richiesta di accesso contiene un codice client univoco che identifica il tenant che l'utente sta tentando di accedere, nonché le informazioni sul nome utente e sulla password dell'utente. Il sistema di autenticazione può utilizzare tali informazioni per convalidarle

  1. Il client è un codice client valido con un database esistente per accedere
  2. L'utente è un utente valido all'interno di quel database

e quindi emettere il token auth nella risposta.

Il problema deriva dal fatto che abbiamo un altro gruppo di utenti, utenti del supporto amministrativo, che possono accedere a tutti i database. Per implementare questo comportamento, abbiamo identificato due possibili modi per implementare questo comportamento: uno, abbiamo un database aggiuntivo contenente solo utenti di supporto e quando l'utente prova ad accedere controlliamo l'elenco utenti del database aggiuntivo come parte dell'autenticazione; o due, aggiungiamo gli utenti di supporto agli elenchi di utenti interni di ciascun database univoco e in qualche modo proviamo a tenerlo sincronizzato.

Normalmente la prima opzione, il secondo database, sarebbe la mia soluzione ideale qui; tuttavia, poiché la nostra soluzione di database è Postgres, le query tra database non sono realmente uno strumento disponibile, ma devono mantenere due connessioni separate per ogni richiesta di autenticazione.

Esistono altri modi potenziali per implementare ciò che ci manca? In caso contrario, ci sono potenziali svantaggi / problemi di prestazioni a questa metodologia di cui essere a conoscenza?

    
posta moberemk 12.07.2015 - 18:47
fonte

0 risposte

Leggi altre domande sui tag