Tokens mit der Cloud OAuth API austauschen

Mit der Cloud OAuth API (cloudoauth.googleapis.com) können Sie Autorisierungscodes oder Aktualisierungstokens gegen kurzlebige Google CloudOAuth 2.0-Zugriffstokens und OpenID Connect-ID-Tokens (OIDC) austauschen. In Integrationen der Mitarbeiteridentitätsföderation können Ihre Anwendungen dann die zurückgegebenen ID-Tokens mit den öffentlichen Schlüsseln Ihrer Organisation verifizieren und die Zugriffstokens verwenden, umGoogle Cloud -APIs im Namen föderierter Nutzer aufzurufen.

Hinweis

  1. Workforce Identity-Pool und -Anbieter konfigurieren 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, falls sie noch nicht aktiviert ist.

    Erforderliche Rollen zum Aktivieren von APIs

    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 Inhaberrolle (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

Wenn Sie Ihren OAuth-Client bei der Cloud OAuth API authentifizieren möchten, übergeben Sie Ihre Client-ID und Ihren Clientschlüssel auf eine der folgenden Arten:

  • HTTP-Basisauthentifizierung (empfohlen): Übergeben Sie die Base64-codierte Client-ID und den Clientschlüssel im Header Authorization:

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

Autorisierungscode gegen Tokens austauschen

Nachdem sich ein föderierter Nutzer mit seinem Identitätsanbieter (IdP) beim einheitlichen Autorisierungsendpunkt vonGoogle Cloud(https://auth.cloud.google/authorize) angemeldet hat, leitet der Autorisierungsendpunkt den Nutzer mit einem Autorisierungscode an den Weiterleitungs-URI Ihrer Anwendung weiter. Wenn Sie diesen Autorisierungscode gegen ein Zugriffstoken, ein Aktualisierungstoken und ein OIDC-ID-Token eintauschen möchten, senden Sie eine HTTP-POST-Anfrage an den organisationsbezogenen (einzelmandantenfähigen) Endpunkt:

  • HTTP-Basisauthentifizierung (empfohlen):

    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"
    
  • Anfragetextparameter:

    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:

  • ORGANIZATION_ID: Ihre numerische Google Cloud-Organisations-ID.
  • BASE64_ENCODED_CREDENTIALS: der base64-codierte String von CLIENT_ID:CLIENT_SECRET.
  • AUTHORIZATION_CODE: der Autorisierungscode, der vom einheitlichen Autorisierungsendpunkt von Google Cloud(https://auth.cloud.google/authorize) zurückgegeben wird.
  • REDIRECT_URI: der Weiterleitungs-URI, der auf Ihrem OAuth-Client konfiguriert ist.
  • CLIENT_ID: Ihre registrierte OAuth-Client-ID.
  • CLIENT_SECRET: Ihr OAuth-Clientschlüssel.

Zugriffstoken aktualisieren

Wenn ein Zugriffstoken abläuft, verwenden Sie den Genehmigungstyp refresh_token, um ein neues kurzlebiges Zugriffstoken vom Endpunkt auf Organisationsebene (Einzelmandant) abzurufen:

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 Folgendes:

  • ORGANIZATION_ID: Ihre numerische Google Cloud-Organisations-ID.
  • BASE64_ENCODED_CREDENTIALS: der base64-codierte String von CLIENT_ID:CLIENT_SECRET.
  • REFRESH_TOKEN: das Aktualisierungstoken, das der Token-Endpunkt zuvor zurückgegeben hat.
  • REDIRECT_URI: der Weiterleitungs-URI, der auf Ihrem OAuth-Client konfiguriert ist.

Token-Antwortfelder

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

Feld Typ Beschreibung
access_token string Das von der Cloud OAuth API ausgestellte OAuth 2.0-Zugriffstoken zum Aufrufen von Google Cloud -APIs.
refresh_token string Das Aktualisierungstoken, mit dem neue Zugriffstokens abgerufen werden, wenn das aktuelle Token abläuft.
expires_in integer Die verbleibende Lebensdauer des Zugriffstokens in Sekunden (normalerweise 3599).
token_type string Der Tokentyp (z. B. Bearer).
scope string Eine Liste der mit dem Token verknüpften Bereiche.
id_token string Das OIDC-ID-Token, das authentifizierte Identitätsansprüche enthält.

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

OIDC-ID-Token prüfen

Bei Looker-OIDC-Integrationen können Sie die kryptografische Signatur des von der Cloud OAuth API zurückgegebenen id_token mithilfe der öffentlichen JSON Web Keys (JWKs) Ihrer Organisation überprüfen.

Rufen Sie die öffentlichen JWKs der Organisation auf eine der folgenden Arten ab:

  • JWKS-Endpunkt (JSON Web Key Set) direkt abfragen: Senden Sie eine HTTP-GET-Anfrage an https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.json.
  • OIDC-Discovery-Dokument verwenden: Senden Sie eine HTTP-GET-Anfrage an den OIDC-Discovery-Endpunkt (https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration), um die JWKS-Endpunkt-URL aus dem Feld jwks_uri abzurufen.

Ersetzen Sie in beiden Endpunkt-URLs ORGANIZATION_ID durch die numerische Organisations-ID von Google Cloud .

Nächste Schritte