2015-02-04 26 views
8

Ho visto diversi modi per impostare il supporto del provider esterno per l'autenticazione nell'API Web ASP.NET utilizzando Identity, tuttavia tutti si basano su un cookie, impostato dopo l'utente è autorizzato con successo dal fornitore esterno (chiamato "AspNet.External"), che deve essere quindi inoltrato all'endpoint del token sulla stessa API Web.API Web provider di identità esterna ASP.NET senza cookie

Esiste un modo per aggirare questo problema e utilizzare l'autenticazione esterna con l'API Web ASP.NET senza la necessità di utilizzare i cookie? Il motivo di questa preoccupazione è che vorrei integrare questa autenticazione nella mia app mobile, ma l'utente può disabilitare i cookie in qualsiasi momento, rendendo la mia app inutilizzabile.

+0

Nel regolare progetto asp.net, è possibile utilizzare la sessione senza cookie usando 'url', vale a dire l'identificatore univoco per identificare una sessione viene etichettato a URL come querystring. Spero che se riesci ad ottenere questo esempio in web api, questo risolva il tuo scopo. –

+0

Non mi è chiaro cosa stai chiedendo qui. Ogni richiesta deve identificarsi in qualche modo, e di solito è con un cookie perché questo è il modo più sicuro per farlo. È possibile utilizzare un parametro querystring, ma ciò è altamente insicuro perché i querystring vengono registrati nei registri di routing e proxy, nonché nei log del server. –

+0

Sì, comprendo che la richiesta richiede un modo per essere identificata, ma non sono sicuro che un cookie sia il modo migliore per farlo, perché con i cookie disabilitati l'autenticazione non funzionerà. O i cookie verranno temporaneamente archiviati in WebView anche se sono effettivamente disabilitati? Il mio punto è solo per assicurarsi che l'autenticazione funzioni su tutti i dispositivi. –

risposta

7

Che dire dell'utilizzo di OAuth2?

  1. costruire un server OAuth2 con https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth/,
  2. Impostare il server web api app come server di risorse, e abilitare l'autenticazione OAuth portatore, che utilizzano l'autenticazione di intestazione, non biscotto.
  3. Dopo aver ottenuto access_token dal server oauth2, impostare l'intestazione di autenticazione per la richiesta del client.

è possibile controllare il codice qui:

https://github.com/beginor/owin-samples

+2

Stavo pensando che una soluzione più semplice e più semplice dovrebbe essere disponibile. Ciò significherebbe un'implementazione quasi pulita dal terreno ... –

Problemi correlati