Google Cloud gibt verschiedene Arten von Tokens aus, die sich in ihrem Zweck und den Parteien unterscheiden, zwischen denen sie ausgetauscht werden.
In der folgenden Tabelle finden Sie einen Überblick über die wichtigsten Tokenkategorien, in denen sich verschiedene Tokentypen befinden.
Tokenkategorie | Kommunikationspfad | Zweck |
---|---|---|
Zugriffstokens | Autorisierungsserver ⭢ Client ⭢ Google API | Ermöglicht Clients, Google Cloud APIs aufzurufen. |
Token-granting tokens | Autorisierungsserver ⭤ Client | Ermöglicht es Clients, neue oder andere Tokens zu erhalten, möglicherweise zu einem späteren Zeitpunkt. |
Identitätstokens | Autorisierungsserver ⭢ Client | Ermöglicht es Clients, den Nutzer zu identifizieren, mit dem sie interagieren. |
Zugriffs- und Identitätstokens sind Inhabertokens. Inhabertokens sind eine allgemeine Klasse von Tokens, die Zugriff auf die Partei gewähren, die das Token besitzt.
Die Verwendung von Inhabertokens für die Authentifizierung basiert auf der Sicherheit, die durch ein verschlüsseltes Protokoll wie HTTPS bereitgestellt wird. Wenn ein Inhaber-Token abgefangen wird, kann es von einem böswilligen Akteur verwendet werden, um Zugriff zu erhalten.
Wenn Inhabertokens für Ihren Anwendungsfall nicht genügend Sicherheit bieten, können Sie das Risiko eines Tokendiebstahls verringern, indem Sie kontextbezogenen Zugriff verwenden, die Lebensdauer von Zugriffstokens begrenzen oder eine gegenseitige Transport Layer Security-Lösung (mTLS) wie Chrome Enterprise Premium verwenden.
Zugriffstokens
Mit Zugriffstokens können Clients authentifizierte Aufrufe an Google Cloud APIs senden. Google Cloud unterstützt verschiedene Arten von Zugriffstokens, die folgende Eigenschaften gemeinsam haben:
Sie authentifizieren ein Hauptkonto, das ein Nutzer oder eine Arbeitslast sein kann.
Sie werden für einen bestimmten Client ausgestellt.
Sie sind nur kurz gültig und laufen nach höchstens einigen Stunden ab.
Sie sind auf bestimmte OAuth-Bereiche, Endpunkte oder Ressourcen beschränkt. Das bedeutet, dass ein Zugriffstoken in der Regel nicht den Zugriff auf alle Ressourcen eines Nutzers gewährt, sondern nur auf eine bestimmte Teilmenge.
Zugriffstokens können sich in folgenden Punkten unterscheiden:
Aussteller: Die Partei, die das Token ausstellt.
Principal: Der Typ des Hauptkontos, das mit dem Token authentifiziert werden kann.
Einschränkungen: Die Einschränkungen, die für das Token gelten können.
In der folgenden Tabelle sind die verschiedenen Arten von Zugriffstokens aufgeführt:
Tokentyp | Aussteller | Hauptkonten | Beschränkungen |
---|---|---|---|
Nutzerzugriffstoken | Google-Autorisierungsserver |
|
OAuth-Bereich |
Dienstkonto-Zugriffstoken |
|
Dienstkonto | OAuth-Bereich |
Token für die domainweite Delegierung | Google-Autorisierungsserver | Nutzer (verwalteter Nutzer) | OAuth-Bereich |
JSON-Webtoken (JWT) für Dienstkonto | Kunde | Dienstkonto | OAuth-Bereich oder API |
Föderiertes Zugriffstoken | Google Cloud IAM-Autorisierungsserver |
|
OAuth-Bereich |
Token für die Zugriffsgrenze für Anmeldedaten | Google Cloud IAM-Autorisierungsserver |
|
Bestimmte Cloud Storage-Objekte |
Vom Client ausgegebenes Zugriffsgrenztoken für Anmeldedaten | Kunde | Dienstkonto | Bestimmte Cloud Storage-Objekte |
Die verschiedenen Arten von Zugriffstokens weisen auch unterschiedliche Sicherheitseigenschaften auf:
Format: Einige Zugriffstokens sind undurchsichtig, d. h. sie haben ein proprietäres Format und können nicht geprüft werden. Andere Tokens sind als JSON Web Token codiert, das vom Client decodiert werden kann.
Introspectability: Einige undurchsichtige Tokens können mit derGoogle Cloud API introspektiert werden, andere nicht.
Gültigkeitsdauer: Die Gültigkeitsdauer von Tokens variiert. Außerdem kann es Einschränkungen geben, inwieweit sie geändert werden können.
Widerrufbarkeit: Einige Tokens können widerrufen werden. Andere Tokens bleiben bis zum Ablaufdatum gültig.
In der folgenden Tabelle werden die Unterschiede zwischen den Zugriffstoken-Typen zusammengefasst.
Tokentyp | Format | Introspektierbar | Lebensdauer | Widerrufbar |
---|---|---|---|---|
Nutzerzugriffstoken | Undurchsichtig | Ja | 1 Stunde | Ja |
Dienstkonto-Zugriffstoken | Undurchsichtig | Ja | 5 Minuten bis 12 Stunden | Nein |
Token für die domainweite Delegierung | Undurchsichtig | Ja | 1 Stunde | Nein |
JSON-Webtoken (JWT) für Dienstkonto | JWT | – | 5 Minuten bis 1 Stunde | Nein |
Föderiertes Zugriffstoken | Undurchsichtig | Nein | Weitere Informationen finden Sie unter Föderierte Zugriffstokens. | Nein |
Token für Zugriffsgrenzen für Anmeldedaten | Undurchsichtig | Nein | Weitere Informationen finden Sie unter Zugriffsbeschränkungstokens für Anmeldedaten. | Nein |
Clientseitig ausgegebenes Zugriffsgrenzen-Token für Anmeldedaten | Undurchsichtig | Nein | – | Nein |
Nutzerzugriffstokens
Mit Nutzerzugriffstokens wird ein Nutzer authentifiziert und ein Client autorisiert, im Namen des Nutzers zu handeln:
Das authentifizierte Hauptkonto ist entweder ein verwaltetes Nutzerkonto oder ein privates Konto. Der Client kann eine Webanwendung oder eine native Anwendung sein.
Nutzerzugriffstokens sind nicht transparent. Zu Diagnosezwecken können Sie ein Zugriffstoken mit dem folgenden Befehl untersuchen. Ersetzen Sie dabei ACCESS_TOKEN
durch ein gültiges Zugriffstoken:
curl "https://oauth2.googleapis.com/tokeninfo?access_token=ACCESS_TOKEN"
Die Ausgabe dieses Befehls sieht in etwa so aus:
{
"azp": "0000000000.apps.googleusercontent.com",
"aud": "0000000000.apps.googleusercontent.com",
"sub": "00000000000000000000",
"scope": "openid https://www.googleapis.com/auth/userinfo.email",
"exp": "1744687132",
"expires_in": "3568",
"email": "user@example.com",
"email_verified": "true"
}
Die Ausgabe enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
aud |
Zielgruppe |
Der OAuth-Client, für den dieses Token bestimmt ist, identifiziert durch seine OAuth-Client-ID. OAuth-Clients können Zugriffstokens für andere OAuth-Clients abrufen, die zum selben Projekt gehören. Die Zielgruppe kann sich von der autorisierten Partei unterscheiden. |
azp |
Bevollmächtigter | Der OAuth-Client, der das Token angefordert hat, identifiziert durch seine OAuth-Client-ID. |
email |
Primäre E-Mail-Adresse |
Die primäre E-Mail-Adresse des Nutzers.
Dieses Feld ist nur vorhanden, wenn das Token den Bereich
|
exp |
Ablaufdatum | Die Ablaufzeit des Tokens im Unix-Epochenzeitformat. |
scope |
OAuth-Bereiche | Die Gruppe von APIs, auf die der Client im Namen des Nutzers zugreifen darf, identifiziert durch den OAuth-Bereich. |
sub |
Betreff |
Das authentifizierte Hauptkonto, das durch seine eindeutige ID identifiziert wird. Diese ID entspricht der ID, die in der Directory API verfügbar ist. |
Nutzer-Zugriffstokens laufen nach einer Stunde automatisch ab, können aber bei Bedarf auch früher widerrufen werden.
Standardmäßig sind Nutzerzugriffstokens Inhabertokens, d. h., sie sind nicht an einen bestimmten Kommunikationskanal, ein bestimmtes Netzwerk oder zusätzliche Anmeldedaten gebunden. Optional können Sie die Tokenbindung implementieren, indem Sie zertifikatbasierten Zugriff bereitstellen, sodass Nutzerzugriffstokens nur in Verbindung mit einem gültigen mTLS-Clientzertifikat verwendet werden können.
Dienstkonto-Zugriffstokens
Mit Dienstkonto-Zugriffstokens wird ein Dienstkonto authentifiziert. Die Tokens sind undurchsichtig und können mit der https://oauth2.googleapis.com/tokeninfo
-API geprüft werden.
Für ein Dienstkonto-Zugriffstoken gibt die API eine Ausgabe zurück, die dem folgenden Beispiel ähnelt:
{
"azp": "000000000000000000000",
"aud": "000000000000000000000",
"scope": "https://www.googleapis.com/auth/userinfo.email",
"exp": "1744687132",
"expires_in": "3568",
"email": "service-account@example.iam.gserviceaccount.com",
"email_verified": "true",
"access_type": "online"
}
Ein Dienstkonto-Token enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
aud |
Zielgruppe | Das Dienstkonto, für das das Token bestimmt ist, entspricht der autorisierten Partei. |
azp |
Bevollmächtigter | Das Dienstkonto, das das Token angefordert hat, identifiziert durch seine eindeutige ID. |
email |
Primäre E-Mail-Adresse |
Die E-Mail-Adresse des Dienstkontos.
Dieses Feld ist nur vorhanden, wenn das Token den Bereich
|
exp |
Ablaufdatum | Die Ablaufzeit des Tokens im Unix-Epochenzeitformat. |
Dienstkonto-Zugriffstokens können nicht widerrufen werden und bleiben bis zum Ablauf gültig.
Standardmäßig laufen Dienstkonto-Zugriffstokens nach einer Stunde ab. Mit der Methode serviceAccounts.generateAccessToken
können Sie Tokens mit unterschiedlichen Gültigkeitsdauern anfordern. Da längere Token-Lebensdauern das Risiko erhöhen können, müssen Sie die Einschränkung iam.allowServiceAccountCredentialLifetimeExtension
konfigurieren, damit Clients Dienstkonto-Zugriffstokens mit einer Lebensdauer von mehr als einer Stunde anfordern können.
Tokens für die domainweite Delegierung
Mit domainweiten Delegierungstokens wird ein Nutzer authentifiziert und ein Dienstkonto autorisiert, im Namen des Nutzers zu handeln. Die Tokens sind nicht transparent und können mit der https://oauth2.googleapis.com/tokeninfo
-API geprüft werden.
Für ein Token für die domainweite Delegierung gibt die API eine Ausgabe zurück, die dem folgenden Beispiel ähnelt:
{
"azp": "000000000000000000000",
"aud": "000000000000000000000",
"scope": "https://www.googleapis.com/auth/admin.directory.user.readonly https://www.googleapis.com/auth/userinfo.email",
"exp": "1744688957",
"expires_in": "3540",
"email": "user@example.com",
"email_verified": "true",
"access_type": "offline"
}
Ein Token für die domainweite Delegierung enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
aud |
Zielgruppe | Das Dienstkonto, für das das Token bestimmt ist, entspricht der autorisierten Partei. |
azp |
Bevollmächtigter | Das Dienstkonto, das das Token angefordert hat, identifiziert durch seine eindeutige ID. |
email |
Primäre E-Mail-Adresse |
Die primäre E-Mail-Adresse des imitierten Nutzers. Dieses Feld ist nur vorhanden, wenn das Token den Bereich
|
exp |
Ablaufdatum | Die Ablaufzeit des Tokens im Unix-Epochenzeitformat. |
scope |
OAuth-Bereiche | Die Gruppe von APIs, auf die der Client im Namen des imitierten Nutzers zugreifen darf, identifiziert durch den OAuth-Bereich. |
Tokens für die domainweite Delegation laufen nach einer Stunde automatisch ab und können nicht widerrufen werden.
JSON-Webtokens für Dienstkonten
Mit JSON Web Tokens (JWTs) für Dienstkonten wird ein Dienstkonto authentifiziert. Dienstkonto-Zugriffstokens werden von einem Autorisierungsserver ausgestellt, Dienstkonto-JWTs können jedoch vom Client selbst ausgestellt werden.
Manchmal werden diese auch als „selbst signierte“ JWTs bezeichnet. Sie können nützlich sein, wenn Sie sich bei einigen Google APIs authentifizieren müssen, ohne ein Zugriffstoken vom Autorisierungsserver abzurufen, z. B. wenn Sie eigene Clientbibliotheken erstellen.
Um ein Dienstkonto-JWT auszustellen, müssen Clients die folgenden Schritte ausführen:
Bereiten Sie eine JSON-Websignatur-Nutzlast vor, die die E-Mail-Adresse des Dienstkontos, einen OAuth-Bereich oder API-Endpunkt und eine Ablaufzeit enthält.
Signieren Sie die Nutzlast mit einem Dienstkontoschlüssel des entsprechenden Dienstkontos. Clients können die Nutzlast offline mit einem von Nutzern verwalteten Dienstkontoschlüssel oder online mit der Methode
signJwt
und einem von Google verwalteten Dienstkontoschlüssel signieren. Weitere Informationen finden Sie unter Selbstsigniertes JSON Web Token erstellen.
Ein decodiertes Dienstkonto-JWT sieht in etwa so aus. Dabei wird SIGNATURE
durch die Signatur des Tokens ersetzt:
{
"alg": "RS256",
"kid": "290b7bf588eee0c35d02bf1164f4336229373300",
"typ": "JWT"
}.{
"iss": "service-account@example.iam.gserviceaccount.com",
"sub": "service-account@example.iam.gserviceaccount.com",
"scope": "https://www.googleapis.com/auth/cloud-platform",
"exp": 1744851267,
"iat": 1744850967
}.SIGNATURE
Anstatt einen OAuth-Bereich im Schlüssel scope
anzugeben, kann in einem Dienstkonto-JWT ein API-Endpunkt im Schlüssel aud
angegeben werden:
{
"alg": "RS256",
"kid": "290b7bf588eee0c35d02bf1164f4336229373300",
"typ": "JWT"
}.{
"iss": "service-account@example.iam.gserviceaccount.com",
"sub": "service-account@example.iam.gserviceaccount.com",
"aud": "https://cloudresourcemanager.googleapis.com/",
"exp": 1744854799,
"iat": 1744851199
}.SIGNATURE
Ein Dienstkonto-JWT enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
aud |
Zielgruppe |
API-Endpunkte, auf die der Client zugreifen darf. Nur gültig, wenn scope nicht angegeben ist.
|
exp |
Ablaufdatum | Die Ablaufzeit des Tokens im Unix-Epochenzeitformat. |
iat |
Zeitpunkt des Problems | Die Zeit, zu der das Token ausgestellt wurde, im Unix-Epochenzeitformat. |
iss |
Aussteller | Der Aussteller des Tokens, also das Dienstkonto selbst. |
scope |
OAuth-Bereiche |
Die Gruppe von APIs, auf die der Client zugreifen darf, identifiziert durch den
OAuth-Bereich. Nur gültig, wenn aud nicht angegeben ist.
|
sub |
Betreff | Authentifiziertes Hauptkonto, das das Dienstkonto selbst ist. |
JWTs für Dienstkonten können bis zu einer Stunde gültig sein und können nicht widerrufen werden.
Föderierte Zugriffstokens
Mit föderierten Zugriffstokens wird ein Principal eines Workforce Identity-Pools oder eines Workload Identity-Pools authentifiziert.
Mit der Mitarbeiteridentitätsföderation können Clients ein externes Token gegen ein föderiertes Zugriffstoken eintauschen, mit dem ein Mitarbeiterpool-Principal authentifiziert wird. Das Hauptkonto des Workforce Identity-Pools wird durch eine Hauptkonto-ID identifiziert, die in etwa so aussieht:
principal://iam.googleapis.com/locations/global/workforcePools/POOL/subject/raha@altostrat.com.
Mit der Identitätsföderation von Arbeitslasten können Clients ein externes Token gegen ein föderiertes Zugriffstoken eintauschen, mit dem ein Arbeitslastpool-Principal authentifiziert wird. Das Hauptkonto des Workload Identity-Pools wird durch eine Hauptkonto-ID identifiziert, die der folgenden ähnelt:
principal://iam.googleapis.com/projects/PROJECT/locations/global/workloadIdentityPools/POOL/subject/SUBJECT_ATTRIBUTE_VALUE
Föderierte Zugriffstokens sind undurchsichtig und können nicht geprüft werden. Die Tokens können nicht widerrufen werden und bleiben bis zum Ablauf gültig. Die Ablaufzeiten für die einzelnen Tokentypen sind so festgelegt:
Bei der Workforce Identity-Föderation wird das Ablaufdatum des Tokens auf den kleineren der beiden folgenden Werte festgelegt:
Verbleibende Zeit bis zum Ablauf der Workforce Identity-Föderationssitzung
1 Stunde
Das Ablaufdatum der Workforce Identity-Föderationssitzung wird anhand der Anmeldezeit und der für den Workforce Identity-Föderationspool konfigurierten Sitzungsdauer bestimmt.
Bei der Identitätsföderation von Arbeitslasten wird das Ablaufdatum des Tokens so festgelegt, dass es mit dem Ablaufdatum des externen Tokens übereinstimmt.
Tokens für Zugriffsgrenzen für Anmeldedaten
Mit Zugriffsgrenzen-Tokens für Anmeldedaten werden Nutzer oder Dienstkonten authentifiziert und eine Zugriffsgrenze eingeschlossen. Die Zugriffsgrenze schränkt das Token so ein, dass es nur für den Zugriff auf eine definierte Teilmenge von Cloud Storage-Ressourcen verwendet werden kann.
Tokens für die Zugriffsgrenze für Anmeldedaten werden manchmal als herabgestuft bezeichnet, da sie von einem Eingabetoken abgeleitet werden, aber hinsichtlich der Ressourcen, auf die sie Zugriff gewähren, eingeschränkter sind.
Das Ablaufdatum von Zugriffsgrenzen-Tokens für Anmeldedaten wird vom Ablaufdatum des Eingabetokens abgeleitet. Dabei kann es sich um ein Nutzerzugriffstoken oder ein Dienstkonto-Zugriffstoken handeln. Tokens für Zugriffsbeschränkungen für Anmeldedaten sind undurchsichtig und können nicht geprüft oder widerrufen werden.
Von Clients ausgegebene Zugriffstokens für Anmeldedaten
Von Clients ausgegebene Zugriffstokens für Zugriffsgrenzen für Anmeldedaten ähneln Zugriffstokens für Zugriffsgrenzen für Anmeldedaten, sind aber für Szenarien optimiert, in denen Clients häufig Zugriffstokens für Zugriffsgrenzen für Anmeldedaten mit unterschiedlichen Zugriffsgrenzen abrufen müssen.
Clients können lokal Zugriffsgrenzentokens für vom Client ausgestellte Anmeldedaten erstellen. Dazu verwenden sie die Cloud-Clientbibliotheken und ein Vermittlertoken für die Zugriffsgrenze, das sie regelmäßig aktualisieren müssen.
Von Clients ausgegebene Zugriffsbeschränkungstokens für Anmeldedaten sind undurchsichtig und können nicht geprüft oder widerrufen werden.
Tokens zur Tokenerteilung
Mit Token-Gewährungstokens können Clients neue oder andere Tokens abrufen, möglicherweise zu einem späteren Zeitpunkt. Google Cloud unterstützt verschiedene Arten von Token-Gewährungstokens, die alle Folgendes gemeinsam haben:
Sie stehen für eine vorherige Authentifizierung.
Sie authentifizieren ein Hauptkonto, das eine Google-Identität (ein Nutzer oder eine Arbeitslast) oder eine externe Identität sein kann.
Sie können gegen ein Zugriffstoken eingelöst werden.
Sie können nicht für Google API-Aufrufe verwendet werden, was sie von Zugriffstokens unterscheidet.
Token-Granting-Tokens können sich in folgenden Punkten unterscheiden:
Aussteller: Die Partei, die das Token ausstellt.
Hauptkonto: Der Typ der Hauptkonto-Identität, die mit dem Token authentifiziert werden kann.
Einschränkungen: Die Einschränkungen, die für das Token gelten können.
In der folgenden Tabelle sind die verschiedenen Arten von Token-Gewährungstokens aufgeführt.
Tokentyp | Aussteller | Eingelöster Zugriffstokentyp | Hauptkonten | Beschränkungen |
---|---|---|---|---|
Aktualisierungstoken | Google-Autorisierungsserver | Nutzerzugriffstoken |
|
OAuth-Bereich |
Autorisierungscode | Google-Autorisierungsserver | Nutzerzugriffstoken |
|
OAuth-Bereich |
Föderiertes Aktualisierungstoken | Google Cloud IAM-Autorisierungsserver | Föderiertes Zugriffstoken | Hauptkonto des Mitarbeiteridentitätspools | OAuth-Bereich |
Föderierter Autorisierungscode | Google Cloud IAM-Autorisierungsserver | Föderiertes Zugriffstoken | Hauptkonto des Mitarbeiteridentitätspools | OAuth-Bereich |
JSON-Webtoken-Assertion für Dienstkonto | Kunde |
|
|
OAuth-Bereich |
Externes JSON-Webtoken | Externer Identitätsanbieter | Föderiertes Zugriffstoken | Externes Hauptkonto | Keine |
Externe SAML-Assertion oder ‑Antwort | Externer Identitätsanbieter | Föderiertes Zugriffstoken | Externes Hauptkonto | Keine |
Amazon Web Services (AWS) GetCallerIdentity -Token
|
Externer Identitätsanbieter | Föderiertes Zugriffstoken | Externes Hauptkonto | Keine |
Die verschiedenen Arten von Token-Gewährungstokens haben auch unterschiedliche Sicherheitseigenschaften:
Format: Einige Tokens sind undurchsichtig. Andere Tokens können vom Client decodiert werden.
Gültigkeitsdauer: Tokens unterscheiden sich in ihrer Gültigkeitsdauer und darin, inwieweit sie geändert werden können.
Mehrfach verwendbar: Einige Token-Gewährungstokens können nur einmal verwendet werden. Andere Tokens können mehrmals verwendet werden.
Widerrufbarkeit: Einige Tokens können widerrufen werden. Andere Tokens bleiben bis zum Ablaufdatum gültig.
In der folgenden Tabelle werden die Unterschiede zwischen diesen Attributen für Token-Gewährungstokens zusammengefasst:
Tokentyp | Format | Lebensdauer | Widerrufbar | Mehrfachnutzung |
---|---|---|---|---|
Aktualisierungstoken | Undurchsichtig | Variiert, siehe Aktualisierungstokens | Ja | Ja |
Autorisierungscode | Undurchsichtig | 10 Minuten | Nein | Nein |
Föderiertes Aktualisierungstoken | Undurchsichtig | Variiert, siehe Föderierte Aktualisierungstokens | Nein | Ja |
Föderierter Autorisierungscode | Undurchsichtig | 10 Minuten | Nein | Nein |
JSON Web Token-Assertion für Dienstkonto | JWT | 5 Minuten bis 1 Stunde | Nein | Ja |
Externes Token oder externes JSON-Webtoken | JWT | Abhängig vom Identitätsanbieter | Abhängig vom Identitätsanbieter | Ja |
Externe SAML-Assertion oder ‑Antwort | SAML | Abhängig vom Identitätsanbieter | Abhängig vom Identitätsanbieter | Ja |
Amazon Web Services (AWS) GetCallerIdentity -Token |
Text-Blob | Abhängig vom Identitätsanbieter | Abhängig vom Identitätsanbieter | Ja |
Aktualisierungstokens
Aktualisierungstokens sind undurchsichtige Tokens, mit denen Clients ID-Tokens und Zugriffstokens für einen Nutzer abrufen können, wenn der Nutzer einen Client zuvor autorisiert hat, in seinem Namen zu handeln.
Aktualisierungstokens sind an einen bestimmten Client gebunden und können nur in Kombination mit gültigen Clientanmeldedaten verwendet werden, z. B. einer Client-ID und einem Clientschlüssel.
Wenn die Autorisierung des Clients einen oder mehrere Google Cloud OAuth-Bereiche umfasst, unterliegt die Lebensdauer des Aktualisierungstokens der Steuerung der Google Cloud Sitzungslänge. Andernfalls bleiben Aktualisierungstokens gültig, bis der Nutzer seine Autorisierung widerruft oder andere Ereignisse zum Widerrufen von Tokens eintreten.
Autorisierungscodes
Autorisierungscodes sind undurchsichtige, kurzlebige Tokens. Die Codes sind nur für die Nutzerauthentifizierung als Vermittler zwischen dem Client und dem Google-Autorisierungsserver vorgesehen.
Wie Aktualisierungstokens sind Autorisierungscodes an einen Client gebunden und können nur in Kombination mit gültigen Clientanmeldedaten verwendet werden. Im Gegensatz zu Aktualisierungstokens können Autorisierungscodes nur einmal verwendet werden.
Föderierte Aktualisierungstokens
Föderierte Aktualisierungstokens sind undurchsichtige Tokens, mit denen Clients Zugriffstokens für ein Hauptkonto des Mitarbeiteridentitätspools abrufen können, wenn der Nutzer zuvor einen Client autorisiert hat, in seinem Namen zu handeln.
Wie Aktualisierungstokens sind auch föderierte Aktualisierungstokens an einen bestimmten Client gebunden und können nur in Kombination mit gültigen Clientanmeldedaten verwendet werden, z. B. einer Client-ID und einem Clientgeheimnis.
Im Gegensatz zu Aktualisierungstokens können föderierte Aktualisierungstokens nicht widerrufen werden. Die Lebensdauer eines föderierten Aktualisierungstokens ist mit der Workforce Identity-Sitzung verknüpft, die zum Abrufen des Tokens verwendet wurde. Das Token bleibt gültig, bis die Sitzung abläuft.
Föderierte Autorisierungscodes
Wie Autorisierungscodes sind auch föderierte Autorisierungscodes undurchsichtige, kurzlebige Tokens. Die Codes sind nur für die Verwendung während der Nutzerauthentifizierung als Vermittler zwischen dem Client und dem Google Cloud IAM-Autorisierungsserver vorgesehen.
Autorisierungscodes sind an einen Client gebunden, können nur in Kombination mit gültigen Clientanmeldedaten verwendet werden und sind nur einmal nutzbar.
JSON Web Token-Assertions für Dienstkonten
Mit Dienstkonto-JSON Web Tokens (JWTs) wird die Identität eines Dienstkontos bestätigt. Arbeitslasten können JWT-Assertions für Dienstkonten verwenden, um Zugriffstokens für Dienstkonten oder Tokens für die domainweite Delegierung abzurufen. Die JWT-Assertion des Dienstkontos wird mit einem Dienstkontoschlüssel signiert.
Eine decodierte JWT-Assertion für ein Dienstkonto sieht in etwa so aus. Dabei wird SIGNATURE
durch die Signatur des Tokens ersetzt:
{
"alg": "RS256",
"kid": "290b7bf588eee0c35d02bf1164f4336229373300",
"typ": "JWT"
}.{
"iss": "service-account@example.iam.gserviceaccount.com",
"scope": "https://www.googleapis.com/auth/devstorage.read_only",
"aud": "https://oauth2.googleapis.com/token",
"exp": 1744851267,
"iat": 1744850967
}.SIGNATURE
JWT-Assertions für Dienstkonten sind strukturell ähnlich wie JWTs für Dienstkonten: Beide Arten von Tokens können vom Client selbst ausgestellt und mit einem Dienstkontoschlüssel signiert werden. Die beiden Arten von Tokens verwenden jedoch unterschiedliche Nutzlasten, wie in der folgenden Tabelle beschrieben.
Feld | Dienstkonto-JWT | JWT-Assertion für Dienstkonto |
---|---|---|
aud |
Google Cloud API, wird ausgelassen, wenn scope angegeben ist |
Muss https://oauth2.googleapis.com/token lauten. |
exp |
Ablaufdatum | Ablaufdatum |
iat |
Zeitpunkt des Problems | Zeitpunkt des Problems |
iss |
E-Mail-Adresse des Dienstkontos | E-Mail-Adresse des Dienstkontos |
scope |
OAuth-Bereiche, die weggelassen werden, wenn |
OAuth-Bereiche |
sub |
E-Mail-Adresse des Dienstkontos | E-Mail-Adresse eines Nutzerkontos für die domainweite Delegation. Andernfalls wird sie ausgelassen. |
JWT-Assertions für Dienstkonten können bis zu einer Stunde gültig sein und können nicht widerrufen werden.
Externe JSON-Webtokens
Externe JSON-Webtokens (JWTs) werden von einem externen Identitätsanbieter wie Microsoft Entra ID, Okta, Kubernetes oder GitHub ausgestellt. Sie können sich in Struktur und Inhalt unterscheiden.
Wenn Sie die Workforce Identity-Föderation oder die Workload Identity-Föderation konfigurieren, können Sie eine Vertrauensstellung zwischen Google Cloud und einem externen Identitätsanbieter einrichten. Arbeitslasten können dann externe JWTs als Token-Gewährungstokens verwenden, um Tokens für den föderierten Zugriff abzurufen.
Wenn Sie die Mitarbeiteridentitätsföderation verwenden, wird mit dem resultierenden föderierten Zugriffstoken ein Mitarbeiter-Principal authentifiziert.
Wenn Sie die Workload Identity-Föderation verwenden, wird mit dem resultierenden föderierten Zugriffstoken ein Arbeitslast-Identitätspool-Principal authentifiziert.
In beiden Fällen wird die Prinzipal-ID aus einer oder mehreren Anforderungen des externen JWT abgeleitet.
Damit externe JWTs mit Workforce Identity-Föderation oder Workload Identity-Föderation kompatibel sind, müssen sie bestimmte Anforderungen erfüllen.
Externe SAML-Assertions oder -Antworten
Externe Security Assertion Markup Language-Assertions (SAML) sind SAML 2.0-Assertions, die von einem externen Identitätsanbieter wie Microsoft Entra ID, Okta oder Active Directory Federation Services ausgestellt werden. Diese externen SAML-Assertions können optional in einer SAML 2.0-Antwort enthalten oder verschlüsselt sein.
Wie bei externen JSON Web Tokens können Sie die Workforce Identity-Föderation oder die Workload Identity-Föderation so konfigurieren, dass Arbeitslasten externe SAML-Assertions oder -Antworten als Token-Gewährungstokens verwenden können, um föderierte Zugriffstokens abzurufen.
Damit externe SAML-Assertions mit Workforce Identity Federation oder Workload Identity-Föderation kompatibel sind, müssen sie bestimmte Anforderungen erfüllen.
Amazon Web Services (AWS) GetCallerIdentity
-Token
Externe AWS-GetCallerIdentity
-Tokens sind Text-Blobs, die eine signierte Anfrage an die AWS-GetCallerIdentity
-API enthalten.
Ähnlich wie bei externen JSON Web Tokens und SAML-Assertions können Sie die Workforce Identity-Föderation oder die Workload Identity-Föderation so konfigurieren, dass Arbeitslasten diese Text-Blobs als Token-Gewährungstoken verwenden können, um föderierte Zugriffstokens abzurufen.
Identitätstokens
Mit ID-Tokens können Clients den Nutzer identifizieren, mit dem sie interagieren. Google Cloud unterstützt verschiedene Arten von ID-Tokens, die alle Folgendes gemeinsam haben:
Sie sind als JSON Web Tokens (JWTs) formatiert, damit sie vom Client decodiert, überprüft und interpretiert werden können.
Sie authentifizieren ein Hauptkonto, das ein Nutzer oder eine Arbeitslast sein kann.
Sie werden für einen bestimmten Client ausgestellt.
Sie sind nur kurz gültig und laufen nach maximal einer Stunde ab.
Sie sind nicht widerrufbar.
Sie können nicht für Google API-Aufrufe verwendet werden, was sie von Zugriffstokens unterscheidet.
Sie können nicht verwendet werden, um Zugriffstokens zu erhalten. Das unterscheidet sie von Token-Granting-Tokens.
Sie können zur Authentifizierung von Aufrufen zwischen Mikrodiensten oder zur programmatischen Authentifizierung bei Identity-Aware Proxy (IAP) verwendet werden.
Identitätstokens können sich in folgenden Punkten unterscheiden:
Zielgruppe: Die Partei, die das Token decodieren und verwenden soll.
Aussteller: Die Partei, die das Token ausstellt.
Gültigkeitsdauer: Die Tokens unterscheiden sich in der Gültigkeitsdauer und darin, inwieweit sie geändert werden können.
Hauptkonto: Der Typ der Hauptkonto-Identität, die mit dem Token authentifiziert werden kann.
In der folgenden Tabelle sind die verschiedenen Arten von Identitätstokens aufgeführt.
Tokentyp | Aussteller | Zielgruppe | Hauptkonto | Lebensdauer |
---|---|---|---|---|
Nutzer-ID-Token | Google-Autorisierungsserver | OAuth-/OIDC-Client |
|
1 Stunde |
ID-Token für Dienstkonto | Google Cloud IAM-Autorisierungsserver | Beliebige Zielgruppe auswählen | Dienstkonto | 1 Stunde |
IAP-Assertion (Identity-Aware Proxy) | IAP |
|
|
10 Minuten |
SAML-Assertion | Google-Autorisierungsserver | SAML-App | Nutzer (verwalteter Nutzer) | 10 Minuten |
Nutzer-ID-Tokens
Nutzer-ID-Tokens sind JSON-Web-Tokens (JWTs), mit denen ein Nutzer authentifiziert wird. Clients können ein Nutzer-ID-Token abrufen, indem sie einen OIDC-Authentifizierungsablauf initiieren.
Nutzer-ID-Tokens werden mit dem Google JSON Web Key Set (JWKS) signiert. Das Google-JWKS ist eine globale Ressource und dieselben Signaturschlüssel werden für verschiedene Nutzertypen verwendet, darunter:
Verwaltete Nutzerkonten
Privatnutzerkonten
Dienstkonten
Ein decodiertes Nutzer-ID-Token sieht in etwa so aus, wobei SIGNATURE
durch die Signatur des Tokens ersetzt wird:
{
"alg": "RS256",
"kid": "c37da75c9fbe18c2ce9125b9aa1f300dcb31e8d9",
"typ": "JWT"
}.{
"iss": "https://accounts.google.com",
"azp": "1234567890-123456789abcdef.apps.googleusercontent.com",
"aud": "1234567890-123456789abcdef.apps.googleusercontent.com",
"sub": "12345678901234567890",
"at_hash": "y0LZEe-ervzRNSxn4R-t9w",
"name": "Example user",
"picture": "https://lh3.googleusercontent.com/a/...",
"given_name": "Example",
"family_name": "User",
"hd": "example.com",
"iat": 1745361695,
"exp": 1745365295
}.SIGNATURE
Ein ID-Token enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
aud |
Zielgruppe |
Der OAuth-Client, für den dieses Token bestimmt ist, identifiziert durch seine OAuth-Client-ID. OAuth-Clients können Zugriffstokens für andere OAuth-Clients abrufen, die zum selben Projekt gehören. In diesem Fall kann sich die Zielgruppe von der autorisierten Partei unterscheiden. |
azp |
Bevollmächtigter | Der OAuth-Client, der den OIDC-Authentifizierungsablauf durchgeführt hat, identifiziert durch seine OAuth-Client-ID. |
exp |
Ablaufdatum | Die Ablaufzeit des Tokens im Unix-Epochenzeitformat. |
hd |
Gehostete Domain |
Die primäre Domain des Cloud Identity- oder Google Workspace-Kontos des Nutzers.
Dieser Anspruch ist nur vorhanden, wenn der Nutzer ein verwaltetes Nutzerkonto ist und der Client den Parameter
|
iss |
Aussteller |
Der Aussteller des Tokens. Immer auf https://accounts.google.com gesetzt.
|
sub |
Betreff |
Das authentifizierte Hauptkonto, das durch seine eindeutige ID identifiziert wird. Diese ID entspricht der ID, die in der Directory API verfügbar ist. |
Welche Ansprüche in einem ID-Token enthalten sind, hängt vom Parameter scope
in der Authentifizierungsanfrage ab.
Um festzustellen, ob ein Nutzer ein verwaltetes Nutzerkonto ist oder zu welchem Cloud Identity- oder Google Workspace-Konto ein Nutzer gehört, müssen Clients den Anspruch hd
prüfen.
Nutzer-ID-Tokens sind eine Stunde lang gültig und können nicht widerrufen werden.
Dienstkonto-ID-Tokens
Dienstkonto-ID-Tokens sind JSON Web Tokens (JWTs), mit denen ein Dienstkonto authentifiziert wird.
Im Gegensatz zu Dienstkonto-JWTs und Dienstkonto-JWT-Assertions werden Dienstkonto-ID-Tokens nicht mit einem Dienstkontoschlüssel signiert. Stattdessen werden Dienstkonto-ID-Tokens vom Google JSON Web Key Set (JWKS) signiert.
Ein decodiertes Dienstkonto-ID-Token sieht in etwa so aus, wobei SIGNATURE
durch die Signatur des Tokens ersetzt wird:
{
"alg": "RS256",
"kid": "c37da75c9fbe18c2ce9125b9aa1f300dcb31e8d9",
"typ": "JWT"
}.{
"aud": "example-audience",
"azp": "112010400000000710080",
"email": "service-account@example.iam.gserviceaccount.com",
"email_verified": true,
"exp": 1745365618,
"iat": 1745362018,
"iss": "https://accounts.google.com",
"sub": "112010400000000710080"
}.SIGNATURE
Ein Dienstkonto-ID-Token enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
aud |
Zielgruppe | Kennung der Partei, für die dieses Token bestimmt ist. Der Wert kann vom Tokenanforderer frei gewählt werden. |
azp |
Bevollmächtigter | Das Dienstkonto, das das Token angefordert hat, identifiziert durch seine eindeutige ID. |
exp |
Ablaufdatum | Die Ablaufzeit des Tokens im Unix-Epochenzeitformat. |
iss |
Aussteller |
Der Aussteller des Tokens, immer auf https://accounts.google.com festgelegt.
|
sub |
Betreff | Das Dienstkonto, das das Token angefordert hat, identifiziert durch seine eindeutige ID. |
Der genaue Satz der in einem ID-Token enthaltenen Anforderungen hängt davon ab, wie das ID-Token angefordert wird. Beispiel: ID-Tokens, die vom Compute Engine-Metadatenserver angefordert werden, können optional zusätzliche Ansprüche enthalten, die die Identität der VM bestätigen. ID-Tokens, die mit der IAM Credentials API angefordert werden, können optional die Organisations-ID des Projekts des Dienstkontos enthalten.
Im Gegensatz zu Nutzer-ID-Tokens unterstützen Dienstkonto-ID-Tokens nicht den hd
-Anspruch.
ID-Tokens für Dienstkonten sind eine Stunde lang gültig und können nicht widerrufen werden.
Identity-Aware Proxy-Assertions
Identity-Aware Proxy (IAP)-Assertions sind JSON-Web-Tokens (JWTs), die IAP im HTTP-Anfrageheader x-goog-iap-jwt-assertion
an IAP-geschützte Webanwendungen übergibt. IAP-Assertions authentifizieren einen Nutzer und dienen auch als Nachweis dafür, dass eine Anfrage von IAP autorisiert wurde.
Im Gegensatz zu Nutzer-ID-Tokens und Dienstkonto-ID-Tokens werden IAP-Assertions nicht mit dem Google JSON Web Key Set (JWKS) signiert. Stattdessen werden IAP-Assertions mit einem separaten JWKS, dem IAP-JWKS, signiert. Dieser JWKS ist eine globale Ressource und dieselben Signaturschlüssel werden für verschiedene Nutzertypen verwendet, darunter:
Verwaltete Nutzerkonten
Privatnutzerkonten
Dienstkonten
Identitäten von Mitarbeitern in Pools
Eine decodierte IAP-Assertion sieht in etwa so aus, wobei SIGNATURE
durch die Signatur des Tokens ersetzt wird:
{
"alg": "ES256",
"typ": "JWT",
"kid": "4BCyVw"
}.{
"aud": "/projects/0000000000/global/backendServices/000000000000",
"azp": "/projects/0000000000/global/backendServices/000000000000",
"email": "user@example.com",
"exp": 1745362883,
"google": {
"access_levels": [
"accessPolicies/0000000000/accessLevels/Australia"
]
},
"hd": "example.com",
"iat": 1745362283,
"identity_source": "GOOGLE",
"iss": "https://cloud.google.com/iap",
"sub": "accounts.google.com:112010400000000710080"
}.SIGNATURE
Wenn Sie IAP für die Verwendung der Mitarbeiteridentitätsföderation anstelle von Google-Identitäten konfigurieren, sehen IAP-Assertions etwas anders aus:
{
"alg": "ES256",
"typ": "JWT",
"kid": "4BCyVw"
}.{
"aud": "/projects/0000000000/global/backendServices/000000000000",
"azp": "/projects/0000000000/global/backendServices/000000000000",
"email": "user@example.com",
"exp": 1745374290,
"google": {
"access_levels": [
"accessPolicies/0000000000/accessLevels/Australia"
]
},
"iat": 1745373690,
"identity_source": "WORKFORCE_IDENTITY",
"iss": "https://cloud.google.com/iap",
"sub": "sts.google.com:AAFTZ...Q",
"workforce_identity": {
"iam_principal": "principal://iam.googleapis.com/locations/global/workforcePools/example/subject/user-0000000000",
"workforce_pool_name": "locations/global/workforcePools/example"
}
}.SIGNATURE
Eine IAP-Assertion enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
aud |
Zielgruppe | Der Back-End-Dienst, die App Engine-Anwendung oder der Cloud Run-Dienst, für den die IAP-Assertion vorgesehen ist. |
iss |
Aussteller |
Der Aussteller des Tokens, immer auf https://cloud.google.com/iap gesetzt.
|
sub |
Betreff |
Das authentifizierte Hauptkonto, das durch seine eindeutige ID identifiziert wird. Wenn IAP für die Verwendung von Google-Identitäten konfiguriert ist, entspricht diese ID der ID, die in der Directory API verfügbar ist. |
Weitere Informationen zu den IAP-Assertion-Claims finden Sie unter JWT-Nutzlast prüfen.
IAP-Assertions sind 10 Minuten lang gültig und können nicht widerrufen werden.
SAML-Assertions
SAML-Assertions (Security Assertion Markup Language) authentifizieren ein verwaltetes Nutzerkonto und autorisieren den Zugriff auf eine benutzerdefinierte SAML-App. SAML-Assertions werden von Cloud Identity ausgestellt und signiert und können nur zur Authentifizierung verwalteter Nutzerkonten verwendet werden.
Im Gegensatz zu ID-Tokens, die mit einem globalen Schlüssel signiert werden, werden SAML-Assertions mit einem Schlüssel signiert, der für ein Cloud Identity- oder Google Workspace-Konto spezifisch ist.
Eine decodierte SAML-Antwortassertion sieht in etwa so aus:
<saml2:Assertion
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
ID="..."
IssueInstant="2025-04-23T22:47:20.881Z"
Version="2.0">
<saml2:Issuer>
https://accounts.google.com/o/saml2?idpid=C0123456789
</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
<saml2:Subject>
<saml2:NameID
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">
user@example.com
</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData
NotOnOrAfter="2025-04-23T22:52:20.881Z"
Recipient="https://app.example.com/"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions
NotBefore="2025-04-23T22:42:20.881Z"
NotOnOrAfter="2025-04-23T22:52:20.881Z">
<saml2:AudienceRestriction>
<saml2:Audience>example-app</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement
AuthnInstant="2025-04-23T22:46:44.000Z"
SessionIndex="...">
<saml2:AuthnContext>
<saml2:AuthnContextClassRef>
urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified
</saml2:AuthnContextClassRef>
</saml2:AuthnContext>
</saml2:AuthnStatement>
</saml2:Assertion>
Eine SAML-Assertion enthält die folgenden Felder:
Feld | Name | Beschreibung |
---|---|---|
Audience |
Zielgruppe | Entitäts-ID der SAML-App. |
Issuer |
Aussteller | Aussteller des Tokens, spezifisch für ein Cloud Identity- oder Google Workspace-Konto. |
NameID |
Betreff | Das authentifizierte Prinzipal. Das Format der Kennung hängt von der Konfiguration der SAML-App ab. |
Der genaue Satz der Attribute, die in einer SAML-Assertion enthalten sind, hängt von der Konfiguration der SAML-App ab.
SAML-Assertions sind 10 Minuten lang gültig und können nicht widerrufen werden.