Authentifizierung mit einer REST-API
Baue ich eine REST-API in asp.net mvc. Mein system Formularauthentifizierung verwendet. Benutzername/Passwort oder openId/fbconnect, etc. Wenn ich die [Authorize]
- Attribut auf eine Aktion, wie würde eine android-app oder eine desktop-app erhalten Sie Zugriff auf die Methode?
Oder die bessere Frage ist, wie würde ich mich der Gestaltung der desktop-app zu authentifizieren? Würde ich mich übergeben müssen einen API-Schlüssel oder einige Zeichen von einer Sorte? Oder würde die desktop-app verhält sich wie ein browser und verwenden interne cookies? Ich bin mir nicht ganz sicher, wie eine RESTful API funktionieren würde außerhalb eines web-Browsers mit Authentifizierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde es nicht verwenden cookies in einem REST-API. FormsAuthentication cookie-basierte Methode. Stattdessen sollte der Aufrufer bereitstellen von Anmeldeinformationen für die Authentifizierung bei jedem request im header, oder als Anfrage-parameter.
Beispielsweise könnten Sie die Standardauthentifizierung verwenden, um zu übertragen Benutzernamen und das Kennwort ein, oder fügen Sie einen benutzerdefinierten header " authentication mit verschlüsselten access-token (das ist nicht sehr Erholsam). Man könnte auch implementieren, OAuth, wo der requester wird ein access-token bei jedem request.
Ich würde schreiben eine benutzerdefinierte
AuthorizeAttribute
zum durchführen der Authentifizierung in deinem code, das gibt Ihnen viel Kontrolle. Alternativ können Sie eine controller-Basis-Klasse und überschreiben Sie dieOnAuthorization
Methode.Die API sollte nicht geben Sie ein Kennwort Herausforderung: In einer web-app, eine nicht autorisierte Anforderung wird in der Regel leiten Sie den Benutzer auf eine login-Seite. In einer API-Anfrage wird einfach wieder ein Fehler code. Es ist nun die client-Anwendung die Aufgabe, die Herausforderung der Benutzer über ein Dialogfeld, falls zutreffend. In eine mobile app, möchten Sie vielleicht, um einen dialog anzeigen. In einer web-Anwendung mit OAuth, werden Sie wahrscheinlich wollen, um eine Umleitung zu einem Authentifizierungs-server.
Wenn Sie möchten, testen Sie Ihre REST-API, schlage ich vor, Sie REST-Konsole für Google Chrome und cURL. Ersteres ist einfacher für Anfänger und kommt mit einem netten GUI, während cURL bietet dir noch mehr treue und viele Protokolle.
BEARBEITEN
Einer etwas pedantischen Hinweis: Einige APIs, sogar ziemlich große Anbieter, wie z.B. Twitter, zurück
401
status-codes von Zeit zu Zeit in der Regel das weglassen der (obligatorischen)WWW-Authenticate
Kopf, denn es war nicht Ihre Absicht, die Herausforderung der client.I wouldn't use cookies in a REST API
- Vereinbart, jedoch, Sie können es verwenden, um zu generieren, eine sichere token wie in diese Antwort.Werfen Sie einen Blick auf Amazons AWS-Authentifizierung-Schema. Es tut, was wohl jeder will, und es verwendet das standard-HTTP-Authorization-header.