Willkommen auf dem OAuth-Server

Dieser Server implementiert OAuth 2.0:

Erste Schritte

Um diesen OAuth-Server zu nutzen, kontaktiere uns bitte, um einen OAuth-Antrag anzufordern.

Bitte gib eine kurze Beschreibung der Anwendung, die du erstellen möchtest, zusammen mit den unten stehenden Details an. Keine Sorge, wenn du dir unsicher bist - wir können die Beschreibung, die du uns gibst, zur Hilfe nehmen.

  1. Der Kundentyp: öffentlich oder vertraulich?
  2. Der Zuschusstyp: Autorisierung oder Client-Credentials?
  3. Die erlaubten Redirect URIs.
  4. Die Ressourcen, auf die du zugreifen möchtest. Bitte erkunde unsere API Dokumentation und unsere GraphQL API.

Beispiel (Berechtigung)

1. PKCE Code Verifier und Challenge generieren

// Generate a code verifier (random string)
const codeVerifier = crypto.randomUUID().replace(/-/g, '');

// Create a code challenge (SHA-256 hash of verifier)
const encoder = new TextEncoder();
const data = encoder.encode(codeVerifier);
const digest = await crypto.subtle.digest('SHA-256', data);
const codeChallenge = btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');

2. Genehmigung beantragen

GET /authorize/?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&code_challenge=CODE_CHALLENGE&code_challenge_method=S256

3. Autorisierungscode für Zugangstoken austauschen

POST /token/
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=AUTH_CODE&redirect_uri=YOUR_REDIRECT_URI&client_id=YOUR_CLIENT_ID&code_verifier=YOUR_CODE_VERIFIER

4. Zugang zur geschützten Ressource

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Beispiel (Client-Anmeldedaten)

1. Zugangsdaten austauschen für ein Zugangs-Token

POST /token/
Authorization: Basic BASE64_ENCODED(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials

2. Zugang zur geschützten Ressource

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Beispiel (Gerät)

1. Gerät autorisieren

POST /device-authorization/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID

Das Gerät sollte die Antwort verwenden, um den user_code und die verification_uri für den End-User anzuzeigen oder zu kommunizieren. Geräte mit Bildschirmen können diese Informationen visuell anzeigen, während Geräte ohne Bildschirme Alternativen wie Audio oder Bluetooth nutzen können.

         +-----------------------------------------------+
         |                                               |
         |  Using a browser on another device, visit:    |
         |  https://auth.example.com/device              |
         |                                               |
         |  And enter the code:                          |
         |  ETE39050                                     |
         |                                               |
         +-----------------------------------------------+

Der User besucht die verification_uri, um sich zu authentifizieren, gibt den user_code ein und autorisiert das Gerät.

2. Gerätecode gegen Zugriffstoken austauschen

Während der User die Autorisierung durchführt, sollte das Gerät periodisch versuchen, ein Zugriffstoken zu erwerben (mit der durch interval Sekunden angegebenen Rate):

POST /token/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID&device_code=DEVICE_CODE&grant_type=urn:ietf:params:oauth:grant-type:device_code

3. Zugang zur geschützten Ressource

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Beispiel (Token-Austausch)

RFC 8693-Delegationssemantik wird unterstützt. Das bedeutet, dass Sie das Client-Credentials-Token sowohl im Authorization-Header als auch im actor_token verwenden, wie unten dargestellt.

1. Rufen Sie ein Zugriffstoken für Ihre Client-Credentials-App ab, wie beschrieben in Beispiel (Client-Anmeldedaten).

2. Unter der Annahme, dass EXTERNAL_IDP_USER_ACCESS_TOKEN von Ihrem externen IdP ausgestellt wurde, führen Sie den Token-Austausch-Aufruf durch:

POST /token
Authorization: YOUR_CLIENT_CREDENTIALS_ACCESS_TOKEN
Content-Type: application/x-www-form-urlencoded

grant_type="urn:ietf:params:oauth:grant-type:token-exchange"&
actor_token_type="urn:ietf:params:oauth:token-type:access_token"&
actor_token=YOUR_CLIENT_CREDENTIALS_ACCESS_TOKEN&
subject_token_type="urn:ietf:params:oauth:token-type:access_token"&
subject_token=EXTERNAL_IDP_USER_ACCESS_TOKEN

3. Zugang zur geschützten Ressource

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Ressourcen

Octopus Energy Germany API