Unsere API unterstützt die OAuth 2.0 Client Credentials Grant gemäß RFC 6749 Abschnitt 4.4 für die Anforderung von JWT-Zugangs-Tokens, die beim Aufruf unserer API verwendet werden sollen.
Die Endpunkte, die für den Austausch von Client-Anmeldeinformationen gegen Zugriffstoken verwendet werden, sind die folgenden:
https://api-staging.driftrock.com/oauth2/token
https://external-apis.driftrock.com/oauth2/token
Bitte beachten Sie bei der Umsetzung:
Authorization: Basic <encoded credentials>
Schema zur Authentifizierung mit Kundenanmeldeinformationen und die grant_type=client_credentials
Parameter bei der Anforderung eines ZugriffstokensAuthorization: Bearer <access_token>
wenn Sie unsere API aufrufen.POST /oauth2/token HTTP/1.1
Host: server.example.com
Autorisierung: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Inhalt-Typ: anwendung/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"
}
Sobald Sie das JWT Access Token erhalten haben, können Sie es zur Authentifizierung von API-Anfragen an jede /v2
Endpunkt:
POST /v2/ereignis
Autorisierung: Bearer eyJhbGciOiJIUzI1NiIs...
Wie in RFC 7617 beschrieben, erfordert das Basic-Schema die folgende Kodierung der Client-Anmeldeinformationen:
Authorization: Basic <credential
, wobei <credentials>
ist die Base64-Kodierung von Kunden-ID
und Kundengeheimnis
verbunden durch einen einzelnen Doppelpunkt:
Beispiel für 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")