407 Stimmen

Wie man eine ASP.NET Web API sichert

Ich möchte eine RESTful Webdienst mit ASP.NET Web API, den Drittentwickler für den Zugriff auf die Daten meiner Anwendung verwenden werden.

Ich habe viel gelesen über OAuth und es scheint der Standard zu sein, aber ein gutes Beispiel mit einer Dokumentation zu finden, die erklärt, wie es funktioniert (und die tatsächlich funktioniert!), scheint unglaublich schwierig zu sein (besonders für einen Neuling bei OAuth).

Gibt es ein Beispiel, das tatsächlich gebaut wird und funktioniert und zeigt, wie man das implementiert?

Ich habe zahlreiche Beispiele heruntergeladen:

  • DotNetOAuth - Dokumentation ist aus der Sicht eines Neulings hoffnungslos
  • Thinktecture - kann nicht erstellt werden

Ich habe mir auch Blogs angesehen, die ein einfaches Token-basiertes System vorschlagen (wie diese ) - das scheint, als ob man das Rad neu erfinden müsste, aber es hat den Vorteil, dass es konzeptionell recht einfach ist.

Es scheint, dass es viele Fragen wie diese auf SO gibt, aber keine guten Antworten.

Was machen alle in diesem Bereich?

4voto

refactor Punkte 11764

In Fortsetzung der Antwort von @ Cuong Le würde mein Ansatz zur Verhinderung von Replay-Attacken folgendermaßen aussehen

// Verschlüsseln Sie die Unix-Zeit auf der Client-Seite mit dem gemeinsamen privaten Schlüssel (oder dem Passwort des Benutzers).

// Als Teil des Anfrage-Headers an den Server senden (WEB API)

// Entschlüsselung der Unix-Zeit auf dem Server (WEB API) mit dem gemeinsamen privaten Schlüssel (oder dem Passwort des Benutzers)

// Prüfen Sie die Zeitdifferenz zwischen der Unix-Zeit des Clients und der Unix-Zeit des Servers, die nicht größer als x Sekunden sein sollte

// Wenn Benutzer-ID/Passwort korrekt sind und die entschlüsselte UnixTime innerhalb von x Sekunden mit der Serverzeit übereinstimmt, handelt es sich um eine gültige Anfrage.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X