Nuestra API admite la concesión de credenciales de cliente OAuth 2.0, tal y como se especifica en el RFC 6749, sección 4.4, para solicitar tokens de acceso JWT que se utilizarán para llamar a nuestra API.
Los puntos finales utilizados para intercambiar credenciales de cliente por tokens de acceso son los siguientes:
https://api-staging.driftrock.com/oauth2/token
https://external-apis.driftrock.com/oauth2/token
Al ponerlo en práctica, tenga en cuenta lo siguiente:
Authorization: Basic <encoded credentials>
para autenticarse con credenciales del cliente y el grant_type=credenciales_cliente
al solicitar un token de accesoAuthorization: Bearer <access_token>
al realizar llamadas a nuestra API.POST /oauth2/token HTTP/1.1
Host: server.example.com
Autorización: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=credenciales_cliente
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 vez obtenido el token de acceso JWT, puede utilizarlo para autenticar las solicitudes de API a cualquier /v2
punto final:
POST /v2/evento
Autorización: Portador eyJhbGciOiJIUzI1NiIs...
Tal y como se describe en el RFC 7617, el esquema Basic requiere la siguiente codificación de las credenciales del cliente:
Authorization: Basic <credential
donde <credentials>
es la codificación Base64 de ID de cliente
y secreto de cliente
unidos por dos puntos:
Ejemplo de 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")