2015-12-14 23 views
22

Supponendo che al momento disponga di un nuovo progetto basato sul modello "WebApp" di Visual Studio 2015 con autenticazione account individuali, utilizzo il pacchetto Microsoft.AspNet.Authentication e non posso sempre fare affidamento sui cookie, perché la mia API Web dovrebbe anche essere indirizzata alle app mobili :Come utilizzare ASP.net 5 Identity nell'applicazione API Web? Autenticazione utente basata su token. Applicazioni mobili

Come posso aggiungere l'autenticazione alla mia API Web? Sono particolarmente interessato all'autenticazione basata su token.

+4

non tenere 'autenticato data' nel browser si mantiene un variabile di sessione che sarebbe' Session [ "IsAuthenticated"] 'e sarebbe vero o falso a seconda se l'utente/password passa logica/login o no .. questo è estremamente facile in realtà .. un sacco di esempi di ricerca 'classe PrincipalContext' anche ci sono modi per fare questo validando contro SQL Server ecc. – MethodMan

+3

ASP.NET Web API e MVC si sono fusi in MVC 6. Penso scoprirai che puoi utilizzare qualsiasi cosa MVC stia usando, ma ovviamente con l'API Web hai a che fare con chiamate a endpoint piuttosto che con un'interfaccia utente precompilata. – mason

+2

Se non riesci a trovare alcuna informazione preziosa, allora stai certamente guardando nel posto sbagliato. Fe: Google mi conduce a questa pagina a 5 secondi: http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api –

risposta

3

Implementare AuthorizeAttribute personalizzato nel progetto Web API. Nel sovraccarico IsAuthorized (HttpActionContext actionContext) è possibile controllare lo schema di autorizzazione e l'intestazione di autorizzazione e quindi è possibile connettersi al provider delle sessioni e verificare se l'utente ha una sessione attiva. È necessario passare il token di accesso nell'intestazione dell'autorizzazione, quindi se manca il token significa che non esiste un utente attivo. Quindi, quando si effettua l'accesso, è necessario creare e crittografare il token all'accesso corretto. Quindi passa questo token con ogni richiesta al server.
Questo blog contiene ulteriori informazioni sull'utilizzo AuthorizeAttribute: http://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way

4

È possibile utilizzare l'autenticazione di base http o implementare uno simile con un token o il biglietto passati attraverso intestazioni HTTP.

+0

Ma questa libreria che uso fornisce in qualche modo generare quei token? Devo sviluppare e archiviare quei token da solo o è già finito? – Piotrek

3

È possibile effettuare tavolo separato in dB per la memorizzazione i dettagli di autenticazione (authkey, UserID, CreatedDate, ExpiredDate, IsExpired) e fare funzioni come CheckAuthorizationKey (stringa authkey), ExtendAuthorization (string authkey), ExpireAuthorization (stringa authkey) {}

e chiamare tali funzioni per verificare l'autorizzazione come sotto codice di esempio.

public ServiceResult<LoginModel> Login(string auth_key) 
{ 
      var service = new ServiceResult<LoginModel>(); 
      LoginModel user = new LoginModel(); 
      if (AuthKey.CheckAuthorizationKey(auth_key) == false) 
      { 
       service.message = TemplateCodes.GetMessage(TemplateCodes.UnAuthorize, null, db); 
       service.status = ServiceStatus.authorization_failed; 
       return service; 
      } 
Problemi correlati