Benvenuto nel server OAuth

Questo server implementa OAuth 2.0:

Introduzione

Per utilizzare questo server OAuth, contattaci per richiedere un'applicazione OAuth.

Fornisci una breve descrizione dell'applicazione che stai creando, insieme ai dettagli di seguito. Non preoccuparti se non sei sicuro: possiamo usare la descrizione che fornisci per aiutarti.

  1. Il tipo di client: pubblico o riservato?
  2. Il tipo di concessione: autorizzazione, credenziali client o dispositivo?
  3. Gli URI di reindirizzamento consentiti.
  4. Le risorse a cui desideri accedere. Esplora la nostra documentazione API e la nostra GraphQL API.

Esempio (autorizzazione)

1. Genera verificatore e sfida del codice PKCE

// 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. Richiedi autorizzazione

Reindirizza l'utente al seguente URL:
https://auth.oeit-kraken.energy/authorize/?
  client_id=YOUR_CLIENT_ID&
  response_type=code&
  redirect_uri=YOUR_REDIRECT_URI&
  code_challenge=CODE_CHALLENGE&
  code_challenge_method=S256
NON includere MAI un segreto in questo URL perché è visibile nella barra degli indirizzi del browser.
In questo passaggio, all'utente viene presentata la scelta di approvare o negare l'accesso. Se l'utente approva, il browser reindirizza a YOUR_REDIRECT_URI e include AUTH_CODE nei parametri della query dell'URL.

3. Scambia il codice di autorizzazione con un token di accesso

Il tuo gestore presso YOUR_REDIRECT_URI deve eseguire la seguente chiamata:
POST https://auth.oeit-kraken.energy/token/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID&
client_secret=CLIENT_SECRET& # omettere per client pubblici
grant_type=authorization_code&
code=AUTH_CODE&
redirect_uri=YOUR_REDIRECT_URI&
code_verifier=YOUR_CODE_VERIFIER
Se intendi effettuare questa chiamata dal frontend, l'applicazione OAuth dovrebbe essere pubblica e il segreto omesso dalla richiesta.
Se intendi effettuare questa chiamata dal backend, l'applicazione OAuth dovrebbe essere riservata e il segreto incluso nella richiesta.

4. Accedi alla risorsa protetta

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

Esempio (credenziali client)

1. Scambia le credenziali per un token di accesso

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

grant_type=client_credentials

2. Accedi alla risorsa protetta

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

Esempio (dispositivo)

1. Autorizza dispositivo

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

client_id=YOUR_CLIENT_ID

Il dispositivo dovrebbe utilizzare la risposta per mostrare o comunicare il user_code e il verification_uri all'utente finale. I dispositivi dotati di schermo possono mostrare queste informazioni visivamente, mentre i dispositivi senza schermo possono utilizzare alternative come l'audio o il Bluetooth.

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

L'utente visita l'verification_uri per autenticarsi, inserisce l'user_code e autorizza il dispositivo.

2. Scambia il codice del dispositivo per il token di accesso

Mentre l'utente sta autorizzando, il dispositivo dovrebbe tentare periodicamente di acquisire un token di accesso (a una frequenza specificata dai secondi interval):

POST https://auth.oeit-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. Accedi alla risorsa protetta

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

Esempio (scambio di token)

Sono supportate le semantiche di delega RFC 8693. Ciò significa che utilizzerai il token delle credenziali client sia nell'intestazione Authorization che nell'actor_token, come mostrato di seguito.

1. Recupera un token di accesso per la tua app con credenziali client, come descritto in Esempio (credenziali client).

2. Supponendo che EXTERNAL_IDP_USER_ACCESS_TOKEN sia stato emesso dal tuo IdP esterno, effettua la chiamata di scambio token:

POST https://auth.oeit-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. Accedi alla risorsa protetta

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

Risorse

Octopus Energy Italy API