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

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

3. Wissel autorisatiecode in voor toegangstoken

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. Toegang tot beveiligde bron

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Voorbeeld (clientreferenties)

1. Wissel referenties in voor een toegangstoken

POST /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 /resource/
Authorization: YOUR_ACCESS_TOKEN

Voorbeeld (apparaat)

1. Autoriseer apparaat

POST /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 /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 /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 /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 /resource/
Authorization: YOUR_ACCESS_TOKEN

Bronnen