Restful Web-Service-Authentifizierung

Ich habe eine Restful-Webdienst-API, die von verschiedenen Drittanbietern verwendet wird. Ein Teil dieser API ist eingeschränkt (Sie benötigen Benutzername / Passwort, um darauf zuzugreifen). Ich habe mich gefragt, wie die Authentifizierung am besten implementiert werden kann.

Ich verwende https, daher wird die Kommunikation verschlüsselt. Ich habe zwei Ideen:

Bevor der Benutzer den (eingeschränkten) Dienst verwendet, sendet er den Benutzernamen / das Kennwort mithilfe des POST (da https verwendet wird, werden die Anmeldeinformationen verschlüsselt). Nach erfolgreicher Anmeldung sendet der Server einen zufälligen Einmalwert (nonce) zurück, der mit diesem Benutzernamen übereinstimmt. Bei der nächsten Anforderung sendet der Client neben einem Benutzernamen einen zuvor zurückgegebenen Nonce. Server stimmen mit Benutzername und Nonce überein und geben neue Nonce zusammen mit den angeforderten Daten zurück. Jede neue Anforderung verwendet eine neue Nonce. Grundsätzlich handelt es sich hierbei um eine kompakte Version der Digest-Zugriffsauthentifizierung. Da diese API von Drittanbietern verwendet wird, kann Benutzername / Passwort für jede (eingeschränkte) Anforderung verwendet werden. Da https verwendet wird, werden sie verschlüsselt. Ein Nachteil dieses Ansatzes ist die Tatsache, dass dies nicht Restful-konform wäre (POST würde immer verwendet werden).

Ich bin der Wahl des ersten Ansatzes viel näher gekommen (es ist Restful-konform, relativ einfach zu implementieren, XML, JSON oder HTML können verwendet werden, ohne etwas zu ändern), aber ich wollte sehen, was Ihre Meinung ist? Was empfehlen Sie: erster, zweiter oder dritter Ansatz?

Btw, ich benutze Python auf der Serverseite.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage