Betrachten Sie das folgende (allgemeine) Szenario. Ich werde zuerst versuchen zu spezifizieren, wie ich verstehe, wie eine (nette) Web-API mit OAuth aussehen sollte. Bitte korrigieren Sie mich, wenn einer der Flüsse falsch ist.
Meine API : Im Mittelpunkt der Aufmerksamkeit stehen alle Kunden.
Meine Webanwendung : Verwendet die API wie jeder andere Client auch.
Meine mobile App : Verwendet auch die API, genau so wie die Web-App. Benutzer sollten sich authentifizieren können, ohne einen Browser zu öffnen.
3rd Party Web App : Verwendet auch die API - der Benutzer / Ressourcenbesitzer muss jedoch der App die Berechtigung erteilen, etwas zu tun. Sie tun dies, indem sie auf meine Website umleiten (oder ein Popup öffnen), den Benutzer bei Bedarf anmelden und den Benutzer zur Eingabe auffordern.
Mobile App von Drittanbietern : Gleiche Anforderungen wie die Web-App von Drittanbietern.
Hier ist was ich verstehe, und würde so weit machen. Hier brauche ich wirklich Hilfe - dies richtig machen zu können.
Offizielle Web-App
%Vor%Ich benutze hauptsächlich .NET (C #), aber ich würde einen Ansatz lieben, der auch für, sagen wir, Node JS-basierte APIs anwendbar ist.
Wie würdest du das machen? Besonders die Kundenströme sind ein Problem für mich. Der Grund, warum ich frage, ist, dass ich gelesen habe, dass Sie Ihre eigene Sicherheitslösung nicht rollen sollten, es sei denn, dies ist absolut notwendig. Wenn es dafür irgendwelche Standard-Richtlinien gibt, lassen Sie es mich wissen. :)
Werfen Sie einen Blick auf die neuen Web API 2 oAuth Sachen.
Starten Sie grundsätzlich ein neues Web-API-Projekt und stellen Sie sicher, dass Sie die Authentifizierung ändern.
Dann ist es ein einfacher Fall, den Register-Controller aufzurufen. Dies erstellt dann ein Token für Sie, das dann im Header jeder Anfrage für diesen Benutzer gesendet werden kann.
Sehen Sie sich die API-Aufrufe mit fiddler an und erstellen Sie einige Mock-up-Accounts.
Es ist eine Weile her, aber ich dachte, ich würde dokumentieren, was ich getan habe.
Ich verwende DotNetOpenAuth. Ich habe eine Datenbank mit Clients, und sie haben ein Trusted
-Feld - wenn das gesetzt ist, kann der Client die Passwortvergabe verwenden, die automatisch alle Bereiche zuweist, die für diesen Client vordefiniert sind.
Die Webanwendung der 1st-Party verwendet Plain-Cookieauth - die Angabe der Client-Credentials in JS wäre zu riskant.
Tags und Links asp.net-web-api security oauth authentication rest