Architettura software per l'autenticazione / controllo accessi del servizio web REST


12

Sto configurando un nuovo servizio Web RESTful e devo fornire un modello di controllo degli accessi basato sui ruoli . Devo creare un'architettura che consenta agli utenti di fornire il loro nome utente e password per accedere ai servizi e quindi limitare il modo in cui possono utilizzare i servizi (quali servizi possono usare, leggere vs leggere / scrivere, ecc.) In base ai ruoli assegnato a quegli utenti.

Mi sono guardato intorno ad altre domande e ho trovato pezzi di ciò che voglio. Ad esempio, ci sono molte grandi discussioni su come gestire il passaggio delle credenziali ai servizi REST, l' autenticazione riposante , le migliori pratiche . Ci sono anche alcuni ottimi suggerimenti su ciò che i programmatori dovrebbero sapere durante la creazione di siti Web ( ciò che ogni sviluppatore dovrebbe sapere prima di creare un sito Web pubblico ).

Ma non sono stato in grado di trovare un buon post, articolo, libro sulle migliori pratiche e modelli per l'architettura software che implementa queste soluzioni.

In particolare:

  • Come devono essere archiviati i dettagli dell'utente e i diritti di accesso? (modello dati, posizione, formato)
  • Quali sono i buoni modelli di progettazione per rappresentare e tracciare questi nel server? (sessioni in memoria, ricerche di db ogni volta, ecc.)
  • Quali sono i buoni modelli per mappare questi diritti sui servizi in modo sicuro nella base di codice?
  • Quali scelte architettoniche possono aiutare a mantenere il sistema più sicuro e affidabile?
  • Quali lezioni apprese hanno le persone dalle trincee?

Sto cercando modelli di progettazione e raccomandazioni per l'architettura software al di fuori di qualsiasi tecnologia specifica.

(Se le tecnologie contano, sto pianificando di implementarlo usando python, twisted e un database postgresql)


Sembra che tu abbia bisogno di qualcuno che lo scriva per te;)
Martin Blore

Sfortunatamente sembra così. Sembrava strano che questa parte della pila non fosse descritta da nessuna parte. Anche se potessi trovare un commento su come un sito come newegg, digg o persino stackoverflow gestisca le credenziali dell'utente e l'accesso nel backend, ciò aiuterebbe.
Allen

Hai fatto progressi su questo?
Bryan Agee,

Hai considerato oAuth2 ? Ci sono librerie di server e client disponibili in molte lingue popolari che dovrebbero rendere più semplice la sua implementazione.
Sam

Risposte:


5

OpenAM.

http://forgerock.com/openam.html

Come devono essere archiviati i dettagli dell'utente e i diritti di accesso? (modello dati, posizione, formato)

Responsabile identità. Separato da qualsiasi server Web. Basata su LDAP.

Quali sono i buoni modelli di progettazione per rappresentare e tracciare questi nel server? (sessioni in memoria, ricerche di db ogni volta, ecc.)

Risolto dal tuo framework. Non pensare più. Basta usare i buoni modelli di progettazione già costruiti del framework.

Quali sono i buoni modelli per mappare questi diritti sui servizi in modo sicuro nella base di codice?

Risolto dal tuo framework. Ogni framework utilizza un approccio leggermente diverso. Ogni lingua ha caratteristiche leggermente diverse. Django, per esempio, usa pesantemente i decoratori di Python per questo.

Quali scelte architettoniche possono aiutare a mantenere il sistema più sicuro e affidabile?

Di Più? Più di cosa?


Nella mia configurazione specifica non penso di poter usare qualcosa come OpenAM. Non ho bisogno del single sign-on a livello aziendale. Penso di aver bisogno di qualcosa di più piccolo e più autonomo.
Allen

@Allen. Non lo usiamo per il single sign-on a livello aziendale. Lo usiamo per una semplice gestione dell'identità.
S.Lott
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.