Partner-Onboarding Anleitung

Umfang dieser Anleitung

Diese Anleitung beschreibt, wie ein Partner Zugriff auf die Daten von RIO-Kunden erhält und wie die Berechtigungen verwaltet werden. Es beschreibt NICHT die Abrechnung, Business APIs oder die Integration der Partneranwendung in den RIO Marktplatz.

Verantwortlichkeiten der Partner

  • Der Partner hat folgende Informationen bereitzustellen
    • Name, Kurzbeschreibung (1-2 Sätze) und Detailbeschreibung der Anwendung.
    • Name und E-Mail-Adresse einer Kontaktperson, welche die nötige Entscheidungserlaubnis innerhalb des Unternehmens hat. Diese Person wird bei wichtige Ankündigungen, Aktualisierungen und möglicherweise Warnungen im Falle von Missbrauch über die angegebene E-Mail-Adresse kontaktiert.
      • Im besten Fall wird eine Mailingliste von Personen angegeben, da so gewährleistet wird, dass das mögliche Ausscheiden einer Person aus dem Unternehmen die E-Mails nicht ins Leere laufen.
    • Erforderliche RIO-APIs auf die der Partner Zugriff erhalten möchte. Diese sollten in der Zusammenarbeit mit RIO festgelegt werden.
    • E-Mail-Adresse für spätere Buchungsbestätigungen (Falls eine Buchung möglich sein wird, werden dem Partner hierüber buchungsrelevante Informationen automatisiert übermittelt).
  • Kontakt
    • E-Mails, die an die Kontakt-E-Mail-Adresse gesendet werden, sollten innerhalb weniger Tage beantwortet werden. Im schlimmsten Fall kann das Ignorieren von E-Mails zur Deaktivierung des Clients führen.

Marktplatz-Integration für Partner mit Backend-Anbindung

Registrierung der Partneranwendung

Wenn eine Partneranwendung registriert wird, geschieht Folgendes:

  • Ein neuer Client für die Partneranwendung wird beim Autorisierungsserver registriert.
  • Der Partner erhält eine client-id und ein client-secret, um seine Anwendung zu initialisieren.
  • Die Partneranwendung wird zum selbstständigen Buchen im Marketplace System hinzugefügt.
    • Hier handelt es sich NUR um die technische Buchbarkeit, öffentlich erreichbare RIO Marketplace Detailseiten sind hier ausgeschlossen.

Produktbuchung

Immer wenn ein RIO Kunde eine Anwendung auf dem Marketplace bucht, sendet RIO automatisch relevante Buchungs-Informationen über E-Mail an den Partner. Zu diesen Informationen gehört auch eine integration-id, die erforderlich ist, um den Access-Token für Daten-Abruf im Namen des Kunden, via der RIO-APIs zu erhalten.

Partner Integration Grant-Type

RIO betreibt services, die Implementierungen der OAuth 2.1 - und OpenID Connect 1.0-Spezifikationen sowie anderer verwandter Spezifikationen bereitstellen.

Zusätzlich zu den in den genannten Spezifikationen genutzten grant types hat RIO einen speziellen grant type partner_integration eingeführt um das Konzept eines technischen Benutzers für jedes Konto (jeden Kunden), das ein Abonnement für das Partnerprodukt abonniert hat, abzubilden. Der technische Benutzer wird durch eine integration-id eindeutig referenziert.

Dieser Grant-Type darf nur von vertraulichen Clients verwendet werden, die ein client_secret sicher verwalten können.

Parameter:

  • Authorization (header, erforderlich): HTTP Basic-Authentifizierung mit client_id und client_secret wie in RFC 6749 - Client Password beschrieben
    grant_type (body, erforderlich): partner_integration
    integration_id (body, erforderlich): Die Integrationskennung, die dem Partner bei der Produktaktivierung mitgeteilt wurde

Bespiel-Anfrage

Curl

curl \
   --user ${client_id}:${client_secret} \
   -k \
   -d "grant_type=partner_integration&integration_id=${integration_id}" \
    https://auth.iam.rio.cloud/oauth/token

HTTP

POST /oauth/token HTTP/1.1
Host: auth.iam.rio.cloud
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
Accept: application/json
grant_type=partner_integration&integration_id=58cfbc07-4424-45b5-8638-f24f9f734fcb

Token Antwort

Eine Antwort sieht aus wie in RFC 6749 beschrieben.

Die Partneranwendung muss das Access-Token aus der Antwort verwenden, um auf die APIs im Scope zuzugreifen. Ein Refresh-Token wird nicht ausgestellt, da die Partneranwendung jederzeit ein neues Access-Token erhalten kann, wenn sie es benötigt.

Ein Access-Token ist für eine bestimmte Zeit gültig, wie in RFC 6749 - Access Token Response beschrieben, und sollte in dieser Zeit für alle API-Anfragen verwendet werden. Es ist also nicht notwendig, vor jeder Anfrage an eine API ein neues Access-Token anzufragen!

Hier bedeutet:

  • "access_token": "eyJraWQiOiJjMD...": der zu verwendende Wert des Access-Tokens
  • "expires_in": 3599: der Access-Token ist 3599 Sekunden gültig
  • "exp": 1689068077: der Access-Token ist bis zum Unix-Timestamp 1689068077 (= 2023-07-11 09:34:37 UTC) gültig

Verwendung des Access-Tokens

Das Access-Token ist im HTTP-Header Authorization bei der Anfrage an RIO APIs zu verwenden. Er darf NICHT bei Anfragen an APIs enthalten sein die nicht an RIO APIs gehen.

Authorization: Bearer eyJraWQiOiJjMD...

Access Token Struktur

Der Access Token ist ein JWT wie in RFC 7519 - JSON Web Token (JWT) spezifiziert. Ein JWT hat die Form xxxxx.yyyyy.zzzzz wobei:

  • xxxxx: JOSE Header (Base64Url codiert)
  • yyyyy: JWS Payload (Base64Url codiert)
  • zzzzz: JWS Signatur (basierend auf Algorithmus der im Header festgelegt ist)

Im Regelfall sollten Clients den AccessToken nicht dekodieren müssen. Falls Sie jedoch für Debugging Zwecke jemals den Token dekodieren sollten, verwenden Sie bitte ein lokales programm (e.g. https://github.com/mike-engel/jwt-cli).

Wir raten generell davon ab dafür Online/Browser-Tools zu benutzen. Falls Sie dennoch auf solche Dienste (e.g. https://jwt.io) angewiesen sind, sollten sie niemals den gesamten Token kopieren, sondern lediglich Header und Payload xxxxx.yyyyy. Wenn Sie den gesamten Access Token, inklusive Signatur, mit einer dritten Person/Service teilen, kann diese Person sich für 1h auf der RIO Platform als Ihr Client ausgeben. Alle dadurch eventuell verursachten Schäden würden auf Sie zurückfallen.