Tokens mit der Cloud OAuth API austauschen

In diesem Leitfaden wird beschrieben, wie Sie externe Anmeldedaten, Autorisierungscodes oder Aktualisierungstokens für Google Cloud Zugriffstokens austauschen, indem Sie die Cloud OAuth API (cloudoauth.googleapis.com) in Workforce Identity-Föderation-Integrationen verwenden.

Hinweis

  1. Konfigurieren Sie einen Workforce Identity-Pool und -Anbieter. Weitere Informationen finden Sie unter Mitarbeiteridentitätsföderation konfigurieren.
  2. Registrieren Sie einen OAuth-Client und erstellen Sie Clientanmeldedaten. Weitere Informationen finden Sie unter OAuth-Anwendungen verwalten.
  3. Aktivieren Sie die Cloud OAuth API.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

    API aktivieren

Authentifizierungsmethoden

Die Cloud OAuth API unterstützt zwei Clientauthentifizierungsmethoden:

  • HTTP-Basisauthentifizierung (empfohlen): Übergeben Sie die Base64-codierte Client-ID und das Client-Secret im Authorization-Header:

    -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
    
  • Parameter für den Anfragetext: Übergeben Sie die Parameter client_id und client_secret im Anfragetext.

Autorisierungscode gegen Tokens austauschen

Wenn Sie einen Google Cloud -Autorisierungscode gegen ein Zugriffstoken und ein Aktualisierungstoken eintauschen möchten, senden Sie eine HTTP-POST-Anfrage:

  • Endpunkt auf Organisationsebene (Single-Tenant)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

    Anmeldedaten für den Anfragetext

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET"
    

Ersetzen Sie Folgendes:

  • BASE64_ENCODED_CREDENTIALS: Der Base64-codierte String von CLIENT_ID:CLIENT_SECRET.
  • AUTHORIZATION_CODE: Der vonGoogle Cloudausgestellte Autorisierungscode.
  • REDIRECT_URI: der Weiterleitungs-URI, der für Ihren OAuth-Client konfiguriert ist.
  • ORGANIZATION_ID: Ihre numerische Google CloudOrganisations-ID.
  • CLIENT_ID: Ihre registrierte OAuth-Client-ID.
  • CLIENT_SECRET: Ihr OAuth-Clientschlüssel.

Zugriffstoken aktualisieren

Wenn ein Zugriffstoken abläuft, verwenden Sie den Grant-Typ refresh_token, um ein neues kurzlebiges Zugriffstoken abzurufen:

  • Endpunkt auf Organisationsebene (Single-Tenant)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=refresh_token" \
    --data-urlencode "refresh_token=REFRESH_TOKEN" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

Ersetzen Sie REFRESH_TOKEN durch das Aktualisierungstoken, das zuvor vom Token-Endpunkt zurückgegeben wurde.

Felder der Token-Antwort

Wenn ein Tokenaustausch erfolgreich ist, gibt die Cloud OAuth API einen HTTP-Statuscode 200 OK mit den folgenden Feldern zurück:

Feld Typ Beschreibung
access_token string Das von der Cloud OAuth API ausgegebene OAuth 2.0-Zugriffstoken zum Aufrufen von Google Cloud APIs.
refresh_token string Das Aktualisierungstoken, das verwendet wird, um neue Zugriffstokens abzurufen, wenn das aktuelle Token abläuft.
expires_in integer Die verbleibende Lebensdauer des Zugriffstokens in Sekunden (in der Regel 3599).
token_type string Der Tokentyp (z. B. Bearer).
scope string Die Liste der mit dem Token verknüpften Bereiche.
id_token string Das OIDC-ID-Token, das Ansprüche der authentifizierten Identität enthält.

Informationen zu Fehlerantworten, die von der Cloud OAuth API zurückgegeben werden, finden Sie unter Cloud OAuth API-Tokenaustauschfehler.

Nächste Schritte