Sto scrivendo un'API di autenticazione / autorizzazione abbastanza semplice per un'applicazione intranet che stiamo sviluppando.
È il mio primo sistema di autorizzazione basato sui ruoli e rappresenta una buona opportunità per un primo timer perché si trova su un VPS Windows isolato nella rete aziendale interna senza alcun accesso a Internet, quindi qualsiasi errore che faccio non sarà avere enormi conseguenze.
Detto questo, voglio ancora farlo bene.
Quindi volevo sapere se il mio metodo di seguito è sulla strada giusta e accogliamo con favore qualsiasi suggerimento di miglioramento che potresti avere.
Note:
- Sto utilizzando lo stack MEAN poiché si adatta perfettamente al caso aziendale.
- Ho evidenziato in grassetto i punti che mi preoccupano o non sono sicuro che siano il modo migliore di fare le cose.
- Nel caso in cui sto usando la terminologia sbagliata per alcune cose ho incluso le mie definizioni qui sotto in modo da sapere cosa sto cercando di dire.
-
Definizioni :
- Autorizzazioni a livello di sito: gli stati / pagine specifici a cui un utente ha accesso
- Dominio: in questo contesto sono le raccolte di dati specifici a cui l'utente ha accesso.
- Questo accesso è persistente su tutte le pagine quindi non c'è niente come l'Utente ha accesso ai domini X e Y nella Pagina A e nei domini W e Z nella pagina B. Se un utente ha accesso ai domini X e Y, allora è usato per tutti stati a livello di sito.
Ecco cosa sto pensando:
Creazione account
- L'account utente viene creato
- Utilizzando Active Directory (AD), determiniamo le autorizzazioni a livello di sito e le autorizzazioni specifiche del dominio
- Memorizza l'identificativo utente e le autorizzazioni a livello di sito nel DB
Accedi
- L'autenticazione api verifica Identità e restituisce un token Web JSON (JWT)
- Il token di identità viene quindi utilizzato per ottenere un altro token specifico per autorizzazione . Il payload del JWT contiene le autorizzazioni specifiche a livello di sito e livello di dominio per quell'utente.
- Il token di autenticazione viene restituito al client e registrato in
$routeChangeStart
evento diui-router
- Angolare quindi imposta lo stato appropriato per la vista richiesta in base alle autorizzazioni.
Domande specifiche per i guru di programmers.stackexchange:
- Questo sembra un modo ok per implementare un sistema di autorizzazione?
- Dato che ho accesso ad Active Directory sto complicando questo problema memorizzando le autorizzazioni in una collezione Roles in Mongo?
- Ci sono alcuni difetti del rookie in questo design che dovrei correggere / fare più lettura?
Grazie per aver trovato il tempo di leggere questo e apprezzo molto qualsiasi feedback che potresti avere.