2015-02-04 7 views
8

Ich habe mehrere Möglichkeiten zum Einrichten externer Anbieter Unterstützung für die Authentifizierung in ASP.NET Web API mit Identity gesehen, aber alle von ihnen verlassen sich auf ein Cookie, das nach dem Benutzer festgelegt wird wird erfolgreich vom externen Provider autorisiert ("AspNet.External" genannt), der dann an den Token-Endpunkt in der Web-API selbst weitergeleitet werden muss.ASP.NET Identity Externe Anbieter Web API ohne Cookies

Gibt es eine Möglichkeit, dies zu umgehen und die externe Authentifizierung mit ASP.NET Web API zu verwenden, ohne dass Cookies verwendet werden müssen? Der Grund für dieses Problem ist, dass ich diese Authentifizierung in meine mobile App integrieren möchte, aber der Nutzer kann Cookies jederzeit deaktivieren, wodurch meine App unbrauchbar wird.

+0

In regelmäßigen asp.net-Projekt können Sie cookieless Sitzung mit ‚URL‘, dh die eindeutige Kennung verwenden, um eine Sitzung zu identifizieren, getaggt URL als Abfragezeichenfolge Ich hoffe, wenn Sie ein solches Beispiel in Web-API bekommen können, wird das Ihren Zweck lösen. –

+0

Es ist mir unklar, was Sie hier fragen. Jede Anfrage muss sich irgendwie identifizieren, und das ist normalerweise mit einem Cookie, weil dies der sicherste Weg ist, dies zu tun. Sie können einen querystring-Parameter verwenden, der jedoch sehr unsicher ist, da Querystrings in Routing- und Proxy-Protokollen sowie in Serverprotokollen aufgezeichnet werden. –

+0

Ja, ich verstehe, dass die Anfrage einen Weg braucht, um identifiziert zu werden, aber ich bin mir nicht sicher, ob ein Cookie der beste Weg ist, dies zu tun, denn mit deaktivierten Cookies wird die Authentifizierung einfach nicht funktionieren. Oder werden die Cookies vorübergehend im WebView gespeichert, auch wenn sie tatsächlich deaktiviert sind? Mein Punkt ist nur, um sicherzustellen, dass die Authentifizierung auf allen Geräten funktioniert. –

Antwort

7

Wie wäre es mit OAuth2?

  1. Bauen Sie einen oauth2 Server mit https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth/,
  2. dem Server Web-api App als Ressource-Server ein, und oauth Inhaber Authentifizierung aktivieren, die Header-Authentifizierung verwenden, nicht Cookie.
  3. Nachdem get access_token von oauth2 Server get, setzen Sie die Authentifizierung Header für Ihre Client-Anfrage.

können Sie hier den Code überprüfen:

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

+2

Ich dachte, eine einfachere und einfachere Lösung sollte verfügbar sein. Dies würde eine fast von Grund auf saubere Umsetzung bedeuten ... –

Verwandte Themen