Come risolvere un problema di autenticazione generale per più applicazioni?

4

Al mio attuale lavoro (siamo in un ambiente MS), abbiamo più applicazioni Web distribuite, sia inter / intra net. Le app interne generalmente utilizzano un accesso Direttorio attivo, i siti rivolti in avanti hanno ciascuno la propria implementazione di appartenenza. Alcuni usano un fornitore personalizzato che abbiamo scritto, alcuni usano l'abbonamento a Asp.Net.

Sì, abbiamo creato un problema per noi stessi. La domanda è come risolverlo.

Quale sarebbe la soluzione migliore (o almeno una buona) per un servizio di autenticazione / autorizzazione che ci consentirebbe di consolidare l'accesso in un'unica posizione? Dovremmo implementare un provider oAuth / xAuth? Qualcos'altro?

Alcune domande a cui stavo pensando:

  1. I ruoli devono essere lasciati a ciascuna applicazione da implementare? In generale, potremmo pensare a ogni risorsa come dotata di autorizzazioni CRUD e magari decorare le azioni del controller con le autorizzazioni richieste.

  2. Abbiamo alcune app web davvero originali (.Net 1.1) che per lo più si limitano a stare lì ed eseguire. Dove dovremmo disegnare il cutoff per ciò a cui applichiamo questo nuovo servizio?

Se c'è qualcos'altro che dovrei prendere in considerazione, faccelo sapere.

    
posta KevDog 19.05.2011 - 14:53
fonte

1 risposta

2

Per rispondere innanzitutto alle domande specifiche:

  1. I ruoli sono sempre specifici dell'applicazione. A meno che le tue applicazioni non abbiano requisiti di ruolo molto simili o siano molto semplicistiche, non tenterei di centralizzare la gestione dei ruoli
  2. Dovresti disegnare il limite nel punto in cui lo sforzo supera i benefici.

Ora alla domanda più generica:

Dal momento che tutte le tue app interne utilizzano già AD, probabilmente andrei sulla strada dell'aggiunta di un'entità separata in Active Directory per "Guest Users", che potrebbe contenere account utente semplici per tutti gli utenti esterni e quindi aggiornare tutte le app esterne per usa anche AD. In tal caso, puoi utilizzare un provider oAuth centralizzato per il login singolo. E se le tue app web sono scritte su piattaforme diverse, scrivi un piccolo frontend per esporre il provider oAuth come un servizio web, simile a OpenID.

    
risposta data 10.06.2011 - 16:05
fonte

Leggi altre domande sui tag