Dienstkonten mit externen Identitäten verwenden

In diesem Artikel wird gezeigt, wie die Authentifizierung mit Dienstkonten funktioniert, wenn Sie Identity-Aware Proxy (IAP) mit externen Identitäten verwenden.

Client-ID und Secret abrufen

  1. Rufen Sie in der Cloud Console die Seite „IAP“ auf.

    Zur Seite „IAP“

  2. Klicken Sie auf den Tab HTTP-Ressourcen.

  3. Ermitteln Sie die Anwendung, die Sie für die Verwendung von Dienstkonten konfigurieren möchten.

  4. Wählen Sie im Dreipunkt-Menü die Option Client-ID anzeigen aus.

Daraufhin wird eine Seite mit der Client-ID und mit dem Secret für Ihre Anwendung angezeigt. Diese Informationen benötigen Sie für das Konfigurieren von Identity Platform im nächsten Abschnitt.

Google als Identitätsanbieter konfigurieren

Wenn Ihr Identity Platform-Projekt zur Authentifizierung noch nicht Google verwendet, erstellen Sie mit Ihrer Client-ID und mit Ihrem Secret eine neue Konfiguration:

  1. Rufen Sie in der Cloud Console die Seite Identity Platform-Anbieter auf.
    Zur Seite "Identitätsanbieter"

  2. Wenn Sie die Mehrinstanzenfähigkeit von Identity Platform verwenden, wählen Sie den Mandant aus, der Ihrer IAP-Ressource zugeordnet ist.

  3. Klicken Sie auf Anbieter hinzufügen.

  4. Wählen Sie Google aus der Liste der Anbieter aus.

  5. Geben Sie unter Web-SDK-Konfiguration die Client-ID und das Secret ein, die bzw. das Sie im vorherigen Abschnitt abgerufen haben.

  6. Klicken Sie auf Speichern.

Wenn du die Google-Authentifizierung bereits nutzt, kannst du stattdessen deine Client-ID nutzen. Dies hat keinerlei Auswirkungen auf Ihre bestehenden Nutzer.

  1. Rufen Sie in der Cloud Console die Seite Identity Platform-Anbieter auf.
    Zur Seite "Identitätsanbieter"

  2. Wenn Sie die Mehrinstanzenfähigkeit von Identity Platform verwenden, wählen Sie den Mandant aus, der Ihrer IAP-Ressource zugeordnet ist.

  3. Suchen Sie Google in der Liste der Anbieter und klicken Sie auf Bearbeiten.

  4. Klicken Sie unter Zulässige Client-IDs auf Hinzufügen.

  5. Geben Sie die Client-ID ein, die Sie im vorherigen Abschnitt abgerufen haben.

  6. Klicken Sie auf Speichern.

Google-Token gegen Identity Platform-Token tauschen

Wenn Sie sich erstmals bei Google authentifizieren, gibt Identity Platform ein Google-ID-Token zurück. Sie können dieses Token dann gegen ein Identity Platform-Token tauschen. Dazu rufen Sie signInWithIdp auf:

Node.js

import * as firebase from 'firebase/app';
import 'firebase/auth';

const config = {
  apiKey: '...',
};
firebase.initializeApp(config);
const cred = firebase.auth.GoogleAuthProvider.credential(google_oidc_id_token);
firebase.auth().signInWithCredential(cred)
  .then((userCredential) => {
    return userCredential.user.getIdToken();
  })
  .then((gcipIdToken) => {
    // This token can now be used to access the resource.
  })
  .catch((error) => {
    // Error occurred.
  });

Python

SIGN_IN_WITH_IDP_API = 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp'

def exchange_google_id_token_for_gcip_id_token(api_key, tenant_id, google_open_id_connect_token):
  url = SIGN_IN_WITH_IDP_API + '?key=' + api_key
  data={'requestUri': 'http://localhost',
        'returnSecureToken': True,
        'postBody':'id_token=' + google_open_id_connect_token + '&providerId=google.com',
        'tenantId': tenant_id}
  resp = requests.post(url, data)
  res = resp.json()
  return res['idToken']

REST

Anfrage:

POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=API-KEY

Anfragetext:

{
"postBody":"id_token=GOOGLE-ID-TOKEN&providerId=google.com"
"requestUri": "http://localhost",
"returnIdpCredential": true,
"returnSecureToken": true,
"tenantId": "TENANT-ID"
}

Fügen Sie das Identity Platform-ID-Token in den Autorisierungs-Header ein, um über IAP auf Ressourcen zugreifen zu können:

curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"

Externe Identitäten unterstützen kein IAM. Daher müssen Sie die Zugriffssteuerung Ihrer Anwendung manuell aktualisieren, um Zugriff auf Ihr Dienstkonto zu gewähren. Weitere Informationen finden Sie unter JWTs für externe Identitäten.