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:
https://api-staging.driftrock.com/oauth2/token
https://external-apis.driftrock.com/oauth2/token
Durante l'implementazione, tenere presente:
Authorization: Basic <encoded credentials>
per autenticarsi con credenziali del cliente e il grant_type=client_credentials
quando si richiede un token di accessoAuthorization: Bearer <access_token>
quando si effettuano chiamate alla nostra API.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
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3600
}
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"
}
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...
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")