Sicherer Zugriff auf Web-APIs durch das OAuth-Protokoll
Kommentare

Authentifizierte Requests
Authentifizierte HTTP-Requests werden in [7] RFC 2617 – HTTP Authentication: Basic and Digest Access Authentication
standardisiert. OAuth erlaubt in jedem Request die Übergabe

Authentifizierte Requests

Authentifizierte HTTP-Requests werden in [7] RFC 2617 – HTTP Authentication: Basic and Digest Access Authentication
standardisiert. OAuth erlaubt in jedem Request die Übergabe von zwei Sätzen von Credentials, je einen zur Identifizierung von Client und Resource Owner. Die Client Credentials können sowohl aus einem eindeutigen Identifier und einem zugehörigen Shared-Secret, als auch aus einem RSA-Schlüsselpaar bestehen.

Bevor der Client authentifizierte Requests an den Server senden kann, müssen die Client Credentials vereinbart werden. Wie das geschieht, ist ebensowenig Bestandteil der OAuth-Spezifikation wie die Bekanntgabe der notwendigen Konfigurationsparameter für den Zugriff auf den Server.

Aufbau der Requests

Die Requests müssen folgende Parameter enthalten:

  • oauth_consumer_key: der Identifier der Client Credentials
  • oauth_token: Der Token-Wert, mit dem der Request mit dem Resource Owner verknüpft wird. Ist der Request nicht mit einem Resource Owner verknüpft, kann der Parameter weggelassen werden.
  • oauth_signature_method: die vom Client verwendete Signaturmethode (die ebenfalls in der OAuth-Spezifikation definiert wird)
  • oauth_timestamp: Ein Unix-Zeitstempel. Wird die Signaturmethode „PLAINTEXT“ verwendet, kann der Parameter weggelassen werden.
  • oauth_nonce: Der Nonce-Wert, ein eindeutiger, zufällig erzeugter String zum Erschweren von Replay-Angriffen. Der Server prüft den Wert, um sicherzustellen, dass der Request nicht bereits zuvor empfangen wurde. Wird die Signaturmethode PLAINTEXT verwendet, kann der Parameter weggelassen werden.
  • oauth_version: Die Version muss auf „1.0“ gesetzt werden, wenn dieser optionale Parameter angegeben wird.
  • oauth_signature: die vom Client berechnete Signatur
Signaturberechnung

Die Signatur dient als Nachweis, dass der Client im Besitz der entsprechenden Credentials ist. Für die Signaturberechnung wird der Shared-Secret-Teil bzw. der private RSA-Schlüssel der Credentials verwendet. OAuth kennt drei Signaturmethoden: PLAINTEXT, HMAC-SHA1 und RSA-SHA1. Welche Signaturmethode der Server verwendet, liegt im Ermessen dessen Betreibers.

Bei Bedarf können auch eigene Methoden implementiert und dokumentiert werden. Bei Verwendung der Methoden HMAC-SHA1 und RSA-SHA1 wird der so genannte Signature Base String signiert, in den der Reihe nach verschiedene Bestandteile des Requests eingehen:

  • die HTTP-Request-Methode (GET, POST usw.) in Großbuchstaben, gefolgt von einem &-Zeichen
  • der kodierte Host, Pfad und Query-Komponenten des aufgerufenen URIs, gefolgt von einem &-Zeichen
  • die normalisierten, kodierten Protokoll-Parameter mit Ausnahme des Parameters oauth_signature

Die Kodierung erfolgt dabei mit einer speziellen „Percent-Encoding Method“, da die übliche URL-Kodierung keine konsistente Konstruktion des Signature Base Strings garantiert (Abschnitt 3.6 in RFC 5849).

Die Signaturmethode HMAC-SHA1 wird in [8] RFC 2104 – HMAC: Keyed-Hashing for Message Authentication
standardisiert. Die Signatur wird aus dem Signature Base String berechnet, als Schlüssel dienen die mit einem &-Zeichen verknüpften Shared-Secrets der Client und Token Credentials.

Die Signaturmethode RSA-SHA1 wird in Abschnitt 8.1 von [9] RFC 3447 – Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1
standardisiert. Die Signatur wird aus dem Signature Base String berechnet, als Schlüssel wird der private Schlüssel des Clients verwendet.

Die Signaturmethode PLAINTEXT verwendet gar keine Signaturfunktion und darf nur verwendet werden, wenn die Kommunikation über TLS oder SSL geschützt wird. Sie besteht aus:

  • dem kodierten Shared-Secret der Client Credentials
    dem &-Zeichen
  • dem kodierten Shared-Secret der Token Credentials

Die Kodierung erfolgt dabei wieder mit der speziellen Percent-Encoding Method.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -