RESTFul-Authentifizierung mit WebAPI
Habe ich einen web-service gebaut mit WebAPI, akzeptiert JSON-requests und antwortet entsprechend. Die core-Architektur gebaut, aber es gibt keine Authentifizierung/Autorisierung.
Nach viel googeln und stochern Beispiel-Projekte, ich bin mir nicht sicher, wo zu beginnen. Ich habe eine Tonne material von 2008 und 2009, aber nicht eine ganze Menge der letzten guides/workflows für die WebAPI /single-page-apps. Ich denke, der workflow sollte wie folgt sein:
- Überprüfen, um zu sehen, ob der Benutzer angemeldet ist: Wie kann man das mit javascript gemacht werden? Kann ich einen cookie senden, der an meine webAPI? Wenn dem so ist, schicke ich das cookie als parameter im body der Anfrage?
- Lassen Sie die Benutzer-log-in /registrieren Sie sich: Wie werden die Daten verschlüsselt/entschlüsselt? Sicherlich kann ich nicht das versenden von Passwörtern über das Netz... ist das, wo SSL kommt?
- Ihnen Zugriff auf welche Sie Zugriffsrechte besitzen: ich denke, ich habe diese - ich kann nur autorisieren Sie den Controller auf einer pro-Anfrage-basis.
Jede info wäre toll.
Kommentar zu dem Problem
es ist ein gutes Buch über dieses Zeug, nur kam vor kurzem: "amazon.com/Pro-ASP-NET-Web-API-Security/dp/1430257822/...
Bestellt! Dank Evan
InformationsquelleAutor der Frage SB2055 | 2013-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
JavaScript-clients sind einzigartig. Sie haben die Web-API und die Seite mit JavaScript in der gleichen Domäne? Wenn nicht, musst du die same-origin-Richtlinie Einschränkungen. Wenn Sie die Web application hosting der web-Seiten und Web-API, die Sie verwenden können, Formen Authn. In diesem Fall müssen Sie nicht senden Sie das cookie mit der Authentifizierung ticket selbst aus JavaScript. Browser machen das für Sie-und das ist die Ursache von XSRF-problem. Sie müssen vorsichtig sein, über JavaScript senden von Anmeldeinformationen, die der Anwender nicht wissen sollte. Wenn JavaScript kennt so etwas, jeder intelligenten end-Benutzer kann sich zu diesem wissen. OAuth 2.0 implizite gewähren, könnte eine gute Wahl sein. Der Endbenutzer gibt die Anmeldeinformationen (Benutzername und Passwort) in der Autorisierungs-server, welche Probleme ein access-token. JavaScript erhält den Spielstein und stellt ihn auf die web-API, aber es wird nie Zugang zu den Anmeldeinformationen haben.
InformationsquelleAutor der Antwort Badri
Grundsätzlich benötigen Sie eine token-basierte Authentisierung oder Autorisierung.
Wenn Sie beziehen sich auf die ASP.NET WebAPI, das folgende Projekt wird ein großartiger Ort, um zu starten:
http://thinktecture.github.com/Thinktecture.IdentityModel.45/
Selbst wenn Sie Sie nicht verwenden ASP.NET WebAPI, das folgende video ist eine gute Einführung, wie Authentifizierung/Autorisierung über RESTful-web-services:
http://vimeo.com/43603474
Beantworten einige Ihrer Fragen:
Können Sie ein cookie verwenden, aber ich verwende normalerweise den header, um zu vermeiden, gemeinsame XSRF-Angriffe. Cookies werden automatisch enthalten, wenn ein http-request gesendet wird aus dem browser.
Ja. Wenn Sie gehen, gehen Sie mit der token-basierten Ansatz verwenden, können Sie einen separaten server (Identity Server), um die Authentifizierung für Sie.
InformationsquelleAutor der Antwort yoneal