Driftrock OAuth2 API Client-Anmeldeinformationen

Wie man sich mit der Driftrock OAuth2 API verbindet

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:

  • Inszenierungsumgebung: https://api-staging.driftrock.com/oauth2/token
  • Produktionsumgebung: https://external-apis.driftrock.com/oauth2/token

Bitte beachten Sie bei der Umsetzung:

  • Verwenden Sie Authorization: Basic <encoded credentials> Schema zur Authentifizierung mit Kundenanmeldeinformationen und die grant_type=client_credentials Parameter bei der Anforderung eines Zugriffstokens
  • Verwenden Sie Authorization: Bearer <access_token> wenn Sie unsere API aufrufen.

Beispiele

Antrag auf Zugangstoken

POST /oauth2/token HTTP/1.1
Host: server.example.com
Autorisierung: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Inhalt-Typ: anwendung/x-www-form-urlencoded

grant_type=client_credentials


Antwort Erfolgreich

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

Antwort Fehler

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"
}

Verwendung des JWT-Zugangs-Tokens mit unserer API

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...


Überlegungen zur Sicherheit

  • Übertragen Sie Client-Anmeldeinformationen und Token immer über HTTPS
  • Speichern Sie Kundengeheimnisse sicher und geben Sie sie niemals öffentlich preis, z. B. in Front-End-Implementierungen oder mobilen Anwendungen.

Bewährte Praktiken

  • OAuth 2.0 Client Credentials für alle neuen Integrationen verwenden
  • Erwägen Sie die Umstellung bestehender Integrationen von API-Schlüsseln auf OAuth 2.0
  • Einführung eines ordnungsgemäßen Verfalls von Token und Anforderung neuer Token.

Grundlegendes Berechtigungsschema

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")