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
Rufen Sie in der Google Cloud -Konsole die Seite „IAP“ auf.
Klicken Sie auf den Tab ANFRAGEN.
Ermitteln Sie die Anwendung, die Sie für die Verwendung von Dienstkonten konfigurieren möchten.
Wählen Sie im Dreipunkt-Menü die Option Zur OAuth-Konfiguration 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:
Rufen Sie in derGoogle Cloud -Konsole die Seite Identity Platform Providers auf.
Zur Seite „Identitätsanbieter“Wenn Sie die Mehrinstanzenfähigkeit von Identity Platform verwenden, wählen Sie den Mandant aus, der Ihrer IAP-Ressource zugeordnet ist.
Klicken Sie auf Anbieter hinzufügen.
Wählen Sie Google aus der Liste der Anbieter aus.
Geben Sie unter Web-SDK-Konfiguration die Client-ID und das Secret ein, die bzw. das Sie im vorherigen Abschnitt abgerufen haben.
Klicken Sie auf Speichern.
Wenn Sie die Google-Authentifizierung bereits verwenden, können Sie stattdessen Ihre Client-ID verwenden. Dies hat keinerlei Auswirkungen auf Ihre bestehenden Nutzer.
Rufen Sie in derGoogle Cloud -Konsole die Seite Identity Platform Providers auf.
Zur Seite „Identitätsanbieter“Wenn Sie die Mehrinstanzenfähigkeit von Identity Platform verwenden, wählen Sie den Mandant aus, der Ihrer IAP-Ressource zugeordnet ist.
Suchen Sie Google in der Liste der Anbieter und klicken Sie auf Bearbeiten.
Klicken Sie unter Zulässige Client-IDs auf Hinzufügen.
Geben Sie die Client-ID ein, die Sie im vorherigen Abschnitt abgerufen haben.
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.