Welkom bij de OAuth-server

Deze server implementeert OAuth 2.0:

Aan de slag

Om deze OAuth-server te gebruiken, neem contact met ons op om een OAuth-applicatie aan te vragen.

Geef een korte beschrijving van de applicatie die je maakt, samen met de onderstaande details. Geen zorgen als je het niet zeker weet - we kunnen de beschrijving die je geeft gebruiken om te helpen.

  1. Het client-type: openbaar of vertrouwelijk?
  2. Het grant-type: autorisatie, client-credentials of apparaat?
  3. De toegestane omleidings-URI's.
  4. De bronnen waartoe u toegang wilt hebben. Verken onze API-documentatie en onze GraphQL API.

Voorbeeld (autorisatie)

1. Genereer PKCE code verifier en challenge

// 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. Autorisatie aanvragen

Leid de gebruiker om naar de volgende URL:
https://auth.anwb-kraken.energy/authorize/?
  client_id=YOUR_CLIENT_ID&
  response_type=code&
  redirect_uri=YOUR_REDIRECT_URI&
  code_challenge=CODE_CHALLENGE&
  code_challenge_method=S256
Voeg NOOIT een geheim toe aan deze URL, omdat deze zichtbaar is in de adresbalk van de browser.
In deze stap krijgt de gebruiker de keuze om toegang goed te keuren of te weigeren. Als de gebruiker goedkeurt, leidt de browser door naar YOUR_REDIRECT_URI en wordt de AUTH_CODE opgenomen in de queryparameters van de URL.

3. Wissel autorisatiecode in voor toegangstoken

Jouw handler op YOUR_REDIRECT_URI moet de volgende aanroep uitvoeren:
POST https://auth.anwb-kraken.energy/token/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID&
client_secret=CLIENT_SECRET& # weglaten voor openbare clients
grant_type=authorization_code&
code=AUTH_CODE&
redirect_uri=YOUR_REDIRECT_URI&
code_verifier=YOUR_CODE_VERIFIER
Als je van plan bent om deze aanroep vanuit de frontend te doen, moet de OAuth-applicatie openbaar zijn en moet het geheim uit het verzoek worden weggelaten.
Als je van plan bent om deze aanroep vanuit de backend te doen, moet de OAuth-applicatie vertrouwelijk zijn en moet het geheim in het verzoek worden opgenomen.

4. Toegang tot beveiligde bron

GET https://api.anwb-kraken.energy/resource/
Authorization: YOUR_ACCESS_TOKEN

Voorbeeld (clientreferenties)

1. Wissel referenties in voor een toegangstoken

POST https://auth.anwb-kraken.energy/token/
Authorization: Basic BASE64_ENCODED(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials

2. Toegang tot beveiligde bron

GET https://api.anwb-kraken.energy/resource/
Authorization: YOUR_ACCESS_TOKEN

Voorbeeld (apparaat)

1. Autoriseer apparaat

POST https://auth.anwb-kraken.energy/device-authorization/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID

Het apparaat moet het antwoord gebruiken om de user_code en de verification_uri weer te geven of te communiceren aan de eindgebruiker. Apparaten met schermen kunnen deze informatie visueel weergeven, terwijl apparaten zonder schermen alternatieven kunnen gebruiken zoals audio of Bluetooth.

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

De gebruiker bezoekt de verification_uri om te authenticeren, voert de user_code in en autoriseert het apparaat.

2. Wissel apparaatcode in voor toegangstoken

Terwijl de gebruiker autoriseert, moet het apparaat periodiek proberen een toegangstoken te verkrijgen (met een frequentie gespecificeerd door de interval in seconden):

POST https://auth.anwb-kraken.energy/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. Toegang tot beveiligde bron

GET https://api.anwb-kraken.energy/resource/
Authorization: YOUR_ACCESS_TOKEN

Voorbeeld (token-uitwisseling)

RFC 8693 delegatie-semantiek wordt ondersteund. Dit betekent dat u het client-referentie-token gebruikt in zowel de Authorization-header als het actor_token, zoals hieronder weergegeven.

1. Haal een toegangstoken op voor uw client-referentie-app, zoals beschreven in Voorbeeld (clientreferenties).

2. Ervan uitgaande dat EXTERNAL_IDP_USER_ACCESS_TOKEN is uitgegeven door uw externe IdP, voert u de token-uitwisselingsaanroep uit:

POST https://auth.anwb-kraken.energy/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. Toegang tot beveiligde bron

GET https://api.anwb-kraken.energy/resource/
Authorization: YOUR_ACCESS_TOKEN

Bronnen