ich brüte derzeit über einer Authentifizierungs-Möglichkeit für einen REST Webservice.
Hintergrund ist der:
Ich möchte für einen Blog, der auf django basiert, eine API-Schnittstelle schaffen wo berechtigte Personen via "POST" XML/JSON-Daten an den Webservice übermitteln können. Es soll dabei auf Sessions usw. verzichtet werden. Die Übertragung wird mit SSL verschlüsselt.
OAuth, OpenID etc. sind mir bekannt, sind aber für meinen kleinen Fall Overkill.
Mein Lösungsvorschlag wäre:
Der Benutzer erhält einen AUTHKEY und einen SECRETAUTHKEY.
Den AUTHKEY übermittelt er beim Aufrufen der URI z.B.
https://tollerserver.de/api/sendpost?AUTHKEY=xxxxxxxxx
Über den AUTHKEY wird im Endeffekt der User ermittelt und überprüft ob er die API nutzen darf. (Statt des AUTHKEY wäre auch ein simpler HTTP Basic Auth ausreichend, da die Übertragung ja via SSL verschlüsselt wird.)Wenn er die API nutzen darf, kann er seine XML/JSON-Daten übertragen. In den XML/JSON-Daten ist dann der SECRETAUTHKEY enthalten, der mehr oder weniger sicherstellen soll, das die übertragenen Daten auch wirklich von der berechtigen Person stammen.
XML-Beispiel:
Code: Alles auswählen
<POST>
<AUTHENTICATION>
<SECRETAUTHKEY>yyyyyyyyyyyy</SECRETAUTHKEY>
</AUTHENTICATION>
<DATA>
...
</DATA>
</POST>
Ich habe mir APIs verschiedener Websites angesehen, die übertragen oft nur einen API-Key, den sie für die Authentifizierung verwenden.
Habt ihr andere Lösungsvorschläge? Wie ist eure Meinung dazu?
Ich freue mich immer über Anregungen.