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?