Architettura software per autenticazione / controllo accessi del servizio web REST

11

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 proprio nome utente e password per accedere ai servizi e quindi limitare il modo in cui possono utilizzare i servizi (quali servizi possono utilizzare, leggere o leggere / scrivere, ecc.) In base ai ruoli assegnato a tali utenti.

Ho dato un'occhiata ad altre domande e ho trovato pezzi di ciò che voglio. Ad esempio, ci sono molte ottime discussioni su come gestire le credenziali di passaggio ai servizi REST restful-authentication , best practice . Ci sono anche alcuni ottimi suggerimenti su ciò che i programmatori dovrebbero sapere quando creano siti web ( ciò che ogni sviluppatore dovrebbe conoscere 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:

  • In che modo devono essere archiviati i dettagli dell'utente e i diritti di accesso? (modello dati, posizione, formato)
  • Quali sono i buoni schemi di progettazione per rappresentarli e rintracciarli nel server? (sessioni in memoria, ricerche db ogni volta, ecc.)
  • Quali sono i buoni schemi per mappare questi diritti ai 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 del software al di fuori di qualsiasi tecnologia specifica.

(Se le tecnologie sono importanti, ho intenzione di implementarlo usando python, twisted e un database postgresql)

    
posta Allen 04.03.2011 - 18:53
fonte

1 risposta

5

OpenAM.

link

How should user details and access rights be stored? (data model, location, format)

Identity Manager. Separato da qualsiasi server web. Basati su LDAP.

What are good design patterns for representing and tracking these in the server? (sessions in memory, db lookups each time, etc)

Risolto dal tuo framework. Non pensare più Usa semplicemente i buoni schemi di progettazione già costruiti del tuo framework.

What are good patterns for mapping these rights to the services in a secure way in the code base?

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

What architectural choices can help keep the system more secure and reliable?

Più? Più di cosa?

    
risposta data 04.03.2011 - 19:03
fonte