Un accesso tra più applicazioni ASP.NET MVC Domande

8

Ho lavorato a un'applicazione ASP.NET MVC 4 che utilizza l'autenticazione basata su moduli. Gli utenti vengono convalidati da un provider di appartenenza in base alla selezione di un fornitore nel modulo di accesso. Ad esempio, in questo momento ci sono due provider: una directory attiva e un provider personalizzato che chiama un servizio web esterno. Se l'utente è valido, aggiorniamo le informazioni nella nostra tabella utenti locali, come l'ultima data di accesso, ecc. Se l'utente è valido e non esiste nella tabella degli utenti locali, le aggiungiamo. Una volta che tutto ciò è fatto, impostiamo un cookie e passiamo al contenuto principale. Tutti i controllori controllano User.Identity.IsAuthenticated e tornano alla pagina di accesso se il test fallisce.

Ora mi è stato detto che questa applicazione sta passando da una singola applicazione Web a una soluzione di più applicazioni. Ogni applicazione deve esistere indipendentemente dalle altre, condividere lo stesso aspetto grafico e utilizzare la stessa funzionalità di accesso. Ogni applicazione può richiedere l'aggiunta di un nuovo fornitore di appartenenza. Aggiungeremo anche dati per limitare l'accesso alle applicazioni. Un utente può avere accesso a una delle applicazioni solo quando un altro utente ha accesso a tutte loro.

L'impostazione della memorizzazione dei dati non è un problema. Anche la condivisione del layout da un'applicazione per gli altri non è un problema. Quello che sto avendo problemi è decidere come "refactoring" la funzionalità di login in modo tale che l'aggiunta di un nuovo provider di appartenenza e dell'applicazione "down the road" non ci richieda la ripubblicazione delle applicazioni esistenti. Al momento non volevano nemmeno una pagina di avvio single-sign per le applicazioni. Vorrebbero che gli utenti andassero direttamente a un'applicazione, effettuino il login e facciano ciò che sono venuti a fare. Quindi, potrei andare al link , accedere e fare il mio lavoro mentre il ragazzo accanto a me va a link , accede e fa il suo lavoro.

Ho problemi a sistemare la mia mente nel modo migliore per farlo. Il mio primo pensiero è stato un servizio web WCF per il login. Avrei un comando azione chiamare il webservice passando le credenziali di accesso. Se l'accesso ha avuto esito positivo, è possibile ottenere un elenco di applicazioni per l'utente dalla memoria locale. L'aggiunta di altre applicazioni non ci imporrebbe di ripubblicare le app esistenti a causa di nessuna modifica nel servizio web per tali app.

Inoltre continuo a sentire informazioni su questo ASP.NET Web API. Dovrei andare quella strada, invece? Potrei voler costruire un sito per amministrare il database degli utenti locali, quindi avere un sito che ospita l'API web potrebbe essere un'opzione.

La roba Web API è sbagliata per questa situazione? In caso contrario, offre vantaggi rispetto al servizio Web WCF? Esistono metodi alternativi per raggiungere il mio risultato finale?

    
posta fkm71 29.01.2013 - 19:08
fonte

1 risposta

1

Sembra che i tuoi requisiti specifici impongano di essere sulla buona strada per avere bisogno di un provider di autenticazione universale esterno per tutte le tue applicazioni, in particolare per il requisito di una modifica in Provider di appartenenze come hai messo che non può e non dovrebbe risultare in una nuova versione per la tua applicazione.

In un provider di autenticazione universale è possibile controllare quali siti utilizzano quali provider di appartenenze e possono anche sottomettere responsabilità come la delega di ruoli e privilegi a vari utenti dopo l'autenticazione.

Raccomando comunque cautela sull'approccio WCF in quanto sembra che i servizi web basati su SOAP vengano lentamente sostituiti in importanza dai servizi web basati su REST come quello offerto in Web API ASP.NET. Il futuro delle applicazioni è mobile e tutte le principali piattaforme di sviluppo mobile hanno un strong supporto per i servizi Web basati su REST.

Se hai anche il minimo dubbio che potrebbe essere necessario estendere il supporto del provider di appartenenze alle applicazioni mobili, allora è una buona idea rinunciare a WCF. Inoltre, i servizi web basati su REST consentono una migliore integrazione da parte di terze parti (forse i client che desiderano integrarsi con il pacchetto software?) Per comunicare con l'applicazione e recuperare informazioni da esso.

Per quanto riguarda i protocolli di autenticazione per i servizi web basati su REST, non sembra essere un buon modo per farlo, ma la sicurezza è piuttosto essenziale. C'è un buon articolo su come proteggere le richieste di autenticazione per l'applicazione del provider di autenticazione. link

    
risposta data 29.01.2013 - 21:53
fonte

Leggi altre domande sui tag