2015-08-05 11 views
13

Recentemente ho creato un sito Web MVC 5 come un prototipo di front end e ho utilizzato account individuali per l'autenticazione. Ora ho bisogno di creare un backend WebApi2 che servirà questo sito, un'app per iPhone e molti altri client. Sono confuso riguardo all'autenticazione con il sito MVC e WebApi.ASP.NET MVC 5 e WebApi 2 Autenticazione

Desidero che tutta la gestione degli utenti venga eseguita tramite WebApi (che utilizzerà i token) in modo che sia indipendente dal cliente, tuttavia non so come l'autenticazione dei cookie sul sito Web funzionerà senza le mie classi di identità. Sembra che copierò il codice con il sito MVC e WebApi. Voglio utilizzare i cookie per il sito mvc e token oauth per il webapi. Devo creare un altro progetto come un IdentityProvider per gestirlo? O c'è un modo pulito per implementare questo usando solo i progetti MVC e WebApi. Grazie!

EDIT: Sono principalmente confuso su come gestire l'identità utente con gli utenti che possono accedere sia attraverso il sito MVC che attraverso una richiesta WebApi. Devo essere in grado di generare UserIdentity e reclami in modo unificato e sono confuso quando ho sia il modello MVC Individual Accounts che il modello di autenticazione con account individuale WebApi2 con cui lavorare. Voglio archiviare utenti, attestazioni, ecc. In un'istanza MongoDB ospitata da AWS.

+0

Come hai implementato questo. Ho la situazione Per favore, condividilo. Vedi [La mia domanda] (http://stackoverflow.com/questions/37133060/mvc-login-with-web-api) –

+0

Ho implementato utilizzando IdentityServer, è un grande progetto open source – narciero

risposta

2

Entrambi i modelli (MVC e API) utilizzano un SigninManager e UserManager. L'implementazione standard del gestore utenti è basata su SQL Server e Entity Framework.

Se si desidera mantenere i dati utente sul MongoDB, la soluzione migliore imo E 'a rotolare il proprio UserStore per implementare almeno le interfacce IUserStore e IUserRoleStore, o utilizzare this NuGet confezionare

Per l'UserManager è possibile utilizzare il implementazione standard.

L'identità di Asp.net che si sta utilizzando è open source e si può dare un'occhiata su codeplex (quello su github è per mvc 6).

Penso che il modo migliore per gestire il tuo scenario è:

  • per il sito web di login, per l'utente web standard, fare un'azione di login su un controller MVC standard di e lasciare che il SignInManager fare il lavoro; è possibile utilizzare il metodo di accesso standard fornito con il modello
  • Per il login api, implementare un semplice OAuthAuthorizationServerProvider e sovrascrivere il metodo GrantResourceOwnerCredentials; this è un bel articolo che vi mostra tutti i passaggi

Spero che questo aiuti!