Ein großer Teil der REST-Philosophie besteht darin, beim Entwurf Ihrer API so viele Standardfunktionen des HTTP-Protokolls wie möglich zu nutzen. Wenn Sie diese Philosophie auf Authentifizierung, Client und Server anwenden, werden Standard-HTTP-Authentifizierungsfunktionen in der API verwendet.
Anmeldebildschirme eignen sich hervorragend für Anwendungsfälle menschlicher Benutzer: Besuchen Sie einen Anmeldebildschirm, geben Sie Benutzer / Kennwort ein, setzen Sie ein Cookie, der Client stellt dieses Cookie in allen zukünftigen Anforderungen bereit. Von Menschen, die Webbrowser verwenden, kann nicht erwartet werden, dass sie bei jeder einzelnen HTTP-Anforderung eine Benutzer-ID und ein Kennwort angeben.
Für eine REST-API sind ein Anmeldebildschirm und Sitzungscookies jedoch nicht unbedingt erforderlich, da jede Anforderung Anmeldeinformationen enthalten kann, ohne einen menschlichen Benutzer zu beeinträchtigen. und wenn der Kunde zu irgendeinem Zeitpunkt nicht kooperiert, kann eine 401
"nicht autorisierte" Antwort gegeben werden. RFC 2617 beschreibt die Authentifizierungsunterstützung in HTTP.
TLS (HTTPS) wäre ebenfalls eine Option und würde die Authentifizierung des Clients gegenüber dem Server (und umgekehrt) bei jeder Anforderung ermöglichen, indem der öffentliche Schlüssel der anderen Partei überprüft wird. Zusätzlich sichert dies den Kanal für einen Bonus. Dazu ist natürlich vor der Kommunikation ein Schlüsselpaaraustausch erforderlich. (Beachten Sie, dass es speziell darum geht, den Benutzer mit TLS zu identifizieren / zu authentifizieren. Das Sichern des Kanals mithilfe von TLS / Diffie-Hellman ist immer eine gute Idee, auch wenn Sie den Benutzer nicht anhand seines öffentlichen Schlüssels identifizieren.)
Ein Beispiel: Angenommen, ein OAuth-Token sind Ihre vollständigen Anmeldeinformationen. Sobald der Client über das OAuth-Token verfügt, kann es bei jeder Anforderung als Benutzer-ID in der Standard-HTTP-Authentifizierung angegeben werden. Der Server kann das Token bei der ersten Verwendung überprüfen und das Ergebnis der Überprüfung mit einer Lebensdauer zwischenspeichern, die bei jeder Anforderung erneuert wird. Jede Anforderung, die eine Authentifizierung erfordert, wird zurückgegeben, 401
wenn sie nicht angegeben wird.