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

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

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

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. Accedi alla risorsa protetta

GET /resource/
Authorization: YOUR_ACCESS_TOKEN

Esempio (credenziali client)

1. Scambia le credenziali per un token di accesso

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

Esempio (dispositivo)

1. Autorizza dispositivo

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

Risorse

Octopus Energy Italy API