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

Schritt 3: Anfordern der Token Credentials
Nach erfolgreicher Autorisierung fordert der Client die Token Credentials über einen authentifizierten HTTP-POST-Request an den Token-Request-Endpunkt des Servers

Schritt 3: Anfordern der Token Credentials

Nach erfolgreicher Autorisierung fordert der Client die Token Credentials über einen authentifizierten HTTP-POST-Request an den Token-Request-Endpunkt des Servers an. Dazu wird an den vorgegebenen URI der Parameter oauth_verifier mit dem Verification-Code angehängt.

Der Client authentifiziert sich dabei, sowohl über die Client Credentials, als auch über die Temporary Credentials, die dabei den Platz der Token Credentials im Parameter oauth_token einnehmen. Da der Request zu einer HTTP-Response mit Klartext-Credentials darin führt, muss der Server die Kommunikation wieder über z. B. SSL oder TLS absichern. Der Server prüft nun

  • ob der Resource Owner der Ausstellung der Token Credentials zugestimmt hat
  • ob die Temporary Credentials gültig sind (d. h. weder abgelaufen sind, noch bereits verwendet wurden)
  • ob der Verification-Code gültig ist

Sind alle Bedingungen erfüllt, antwortet er mit einer HTTP-Response, die die Token Credentials enthält. Diese werden in den Parametern oauth_token (der Identifier) und oauth_token_secret (das Shared-Secret) angegeben,

Der Server speichert die vom Resource Owner ggf. angegebenen Werte für Gültigkeitsbereich, Gültigkeitsdauer und weitere Attribute und erzwingt beim Erhalten eines mit den Token Credentials authentifizierten Requests deren Einhaltung.

Nachdem Alice von unserem Beispiel ihre Zustimmung zum Zugriff auf die Daten erteilt hat (erkennbar am Aufruf des Callback-URIs durch bilder.example), kann druckdienst.example über eine sichere TLS- oder SSL-Verbindung mit den Temporary Credentials die Token Credentials anfordern, wie in Listing 3 dargestellt.

Listing 3
POST /token HTTP/1.1
Host: bilder.example
Authorization: OAuth realm="Photos",
oauth_consumer_key="druckdienstid",
oauth_token="temporaerestoken",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="[Unix-Zeitstempel]",
oauth_nonce="Zufallsdaten",
oauth_verifier="verifiziere",
oauth_signature="[Die Signatur]"

Der Host bilder.example prüft den Request und sendet im Erfolgsfall die gewünschten Token Credentials im Body der HTTP-Response (Listing 4). Die Temporary Credentials werden mit der Bereitstellung der Token Credentials ungültig.

Listing 4
HTTP/1.1 200 OK
Content-Type: application/x-www-form-urlencoded

oauth_token=dastoken&oauth_token_secret=t0ken5ecr3t

Mit diesen Token Credentials kann druckdienst.example die Bilder der Reihe nach anfordern. Listing 5 stellt den Abruf eines Bilds beispielhaft dar.

Listing 5
GET /photos?file=bild1.jpg&size=original HTTP/1.1
Host: bilder.example
Authorization: OAuth realm="Photos",
oauth_consumer_key="druckdienstid",
oauth_token="dastoken",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="[Unix-Zeitstempel]",
oauth_nonce="Zufallsdaten",
oauth_signature="[Die Signatur]"

Der Host bilder.example prüft den Request. Wenn alles in Ordnung ist, wird das Bild ausgeliefert. druckdienst.example kann nun der Reihe nach die weiteren gewünschten Bilder abfragen.

Möchte Alice später ein weiteres Fotobuch mit anderen Bildern bestellen, kann druckdienst.example sofort mit den bereits vorliegenden Token Credentials darauf zugreifen, sofern Alice sie nicht inzwischen zurückgezogen hat oder die auf bilder.example gespeicherte Gültigkeitsdauer abgelaufen ist.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -