Credenziali del cliente Driftrock OAuth2 API

Come connettersi all'API Driftrock OAuth2

La nostra API supporta l'OAuth 2.0 Client Credentials Grant, come specificato nella sezione 4.4 dell'RFC 6749, per la richiesta di token di accesso JWT da utilizzare per chiamare la nostra API.

Gli endpoint utilizzati per scambiare le credenziali del client con i token di accesso sono i seguenti:

  • Ambiente di allestimento: https://api-staging.driftrock.com/oauth2/token
  • Ambiente di produzione: https://external-apis.driftrock.com/oauth2/token

Durante l'implementazione, tenere presente:

  • Utilizzo Authorization: Basic <encoded credentials> per autenticarsi con credenziali del cliente e il grant_type=client_credentials quando si richiede un token di accesso
  • Utilizzo Authorization: Bearer <access_token> quando si effettuano chiamate alla nostra API.

Esempi

Richiesta del token di accesso

POST /oauth2/token HTTP/1.1
Host: server.example.com
Autorizzazione: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Tipo di contenuto: application/x-www-form-urlencoded

grant_type=client_credentials


Risposta riuscita

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
     
{
    "access_token": "eyJhbGciOiJIUzI1NiIs...",
    "token_type": "Bearer",
    "expires_in": 3600
}

Errore di risposta

HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
 "error": "invalid_grant",
 "error_description": "Invalid credentials"
}

Utilizzo del token di accesso JWT con la nostra API

Una volta ottenuto il token di accesso JWT, è possibile utilizzarlo per autenticare le richieste API a qualsiasi /v2 endpoint:

POST /v2/evento
Autorizzazione: Bearer eyJhbGciOiJIUzI1NiIs...


Considerazioni sulla sicurezza

  • Trasmettere sempre le credenziali e i token del cliente tramite HTTPS.
  • Memorizzate i segreti dei clienti in modo sicuro e non esponeteli mai pubblicamente, ad esempio nell'implementazione front-end o nelle applicazioni mobili.

Migliori pratiche

  • Utilizzare le credenziali client OAuth 2.0 per tutte le nuove integrazioni.
  • Considerare la migrazione delle integrazioni esistenti dalle chiavi API a OAuth 2.0.
  • Implementare la corretta scadenza dei token e la richiesta di nuovi token.

Schema di autorizzazione di base

Come descritto da RFC 7617, lo schema Basic richiede la seguente codifica delle credenziali del client:

Authorization: Basic <credential , dove <credentials> è la codifica Base64 di ID cliente e segreto del cliente uniti da un singolo colon:

Esempio di JavaScript:

function encodeCredentials(clientId, clientSecret) {
	return 'Basic ' + btoa(unescape(encodeURIComponent(clientId + ':' + clientSecret)))
}

async function getAccessToken(clientId, clientSecret) {
	let response = await fetch('https://example.com/path', {
		method:'GET', 
		headers: {'Authorization': encodeCredentials(clientId, clientSecret)}
	});
	let data = await response.json();
	return data.access_token;
}

// Get the JWT token
await getAccessToken("https://external-apis.driftrock.com/oauth2/token", "your client ID", "your client secret")