Die Verknüpfung kann über deine Plattform oder Google initiiert werden. Außerdem ist die Anzeige beider Seiten jeweils einheitlich, wenn dies der Fall ist. Die Unterstützung eines Tokens zum Widerrufen des Tokens oder des kontoübergreifenden Schutzes ist für die Google-Kontoverknüpfung optional.
Die Verknüpfung von Konten kann folgendermaßen aufgehoben werden:
- Nutzeranfrage von
- eine Google-Anwendung oder die Google-Kontoeinstellungen
- Ihre Plattform
- Abgelaufenes Aktualisierungstoken kann nicht verlängert werden
- Andere von Ihnen oder Google initiierte Ereignisse Beispiel: Sperrung von Konten durch Dienste zur Missbrauchs- und Bedrohungserkennung
Nutzer hat die Verknüpfung mit Google angefordert
Wenn die Verknüpfung über ein Google-Konto oder die App eines Nutzers aufgehoben wird, werden alle zuvor gewährten Zugriffs- und Aktualisierungstokens gelöscht. Außerdem wird die Nutzereinwilligung entfernt und optional der Widerrufsendpunkt für Tokens aufgerufen, sofern Sie einen implementiert haben.
Nutzer hat die Verknüpfung mit deiner Plattform angefordert
Du solltest Nutzern eine Möglichkeit bieten, die Verknüpfung aufzuheben, z. B. eine URL zu ihrem Konto. Wenn Sie Nutzern nicht die Möglichkeit bieten, die Verknüpfung aufzuheben, fügen Sie einen Link zum Google-Konto hinzu, damit die Nutzer ihr verknüpftes Konto verwalten können.
Sie können festlegen, dass das Risiko- und Risikomanagement (RISC) genutzt wird, und Google über Änderungen am Verknüpfungsstatus des Nutzerkontos informieren. Dies verbessert die Nutzererfahrung, da sowohl Ihre Plattform als auch Google einen aktuellen und konsistenten Verknüpfungsstatus anzeigen, ohne dass Sie zum Aktualisieren des Verknüpfungsstatus eine Aktualisierungs- oder Zugriffstokenanfrage benötigen.
Ablauf des Tokens
Für eine reibungslose Nutzererfahrung und um Dienstunterbrechungen zu vermeiden, versucht Google, die Aktualisierungstokens am Ende ihrer Lebensdauer zu verlängern. In einigen Szenarien ist die Zustimmung des Nutzers erforderlich, um Konten wieder zu verknüpfen, wenn kein gültiges Aktualisierungstoken verfügbar ist.
Wenn Sie Ihre Plattform so konfigurieren, dass mehrere nicht abgelaufene Zugriffs- und Aktualisierungstokens unterstützt werden, können Sie Race-Bedingungen in Client-Server-Austauschen zwischen geclusterten Umgebungen minimieren, Nutzerunterbrechungen vermeiden und komplexe Timing- und Fehlerbehandlungsszenarien minimieren. Letztendlich können sowohl vorherige als auch neu ausgestellte, noch nicht abgelaufene Tokens für kurze Zeit während des Austauschs des Client-Server-Tokens und vor der Clustersynchronisierung verwendet werden. Beispiel: Eine Google-Anfrage an Ihren Dienst, die das vorherige abgelaufene Zugriffstoken verwendet, erfolgt unmittelbar nach der Ausgabe eines neuen Zugriffstokens, aber vor Erhalt und Clustersynchronisierung bei Google. Es werden alternative Sicherheitsmaßnahmen zum Aktualisieren der Rotation von Tokens empfohlen.
Weitere Ereignisse
Die Verknüpfung der Konten kann auch aus anderen Gründen aufgehoben werden, z. B. wegen Inaktivität, Sperrung oder böswilligem Verhalten. In solchen Szenarien können deine Plattform und Google am besten Nutzerkonten verwalten und neu verknüpfen, indem sie sich gegenseitig über Änderungen am Konto- und Verknüpfungsstatus benachrichtigen.
Implementiere einen Endpunkt für den Widerruf eines Tokens, den Google anrufen soll, und teile Google mithilfe von RISC über deine Widerrufsereignisse mit ein, um sicherzustellen, dass deine Plattform und Google den Kontoverknüpfungsstatus einheitlich halten.
Endpunkt für Widerruf des Tokens
Wenn Sie einen OAuth 2.0- Token-Sperrendpunkt unterstützen , kann Ihre Plattform Benachrichtigungen von Google erhalten. Auf diese Weise können Sie Benutzer über Änderungen des Verbindungsstatus informieren, ein Token ungültig machen sowie Sicherheitsanmeldeinformationen und Berechtigungsberechtigungen bereinigen.
Die Anfrage hat das folgende Formular:
POST /revoke HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&token=TOKEN&token_type_hint=refresh_token
Ihr Token-Sperrendpunkt muss in der Lage sein, die folgenden Parameter zu verarbeiten:
Sperrendpunktparameter | |
---|---|
client_id | Eine Zeichenfolge, die den Anforderungsursprung als Google identifiziert. Diese Zeichenfolge muss in Ihrem System als eindeutige Kennung von Google registriert sein. |
client_secret | Eine geheime Zeichenfolge, die Sie bei Google für Ihren Dienst registriert haben. |
token | Das zu widerrufende Token. |
token_type_hint | (Optional) Der Typ des access_token Tokens, entweder ein access_token oder ein refresh_token . Wenn nicht angegeben, wird standardmäßig access_token . |
Gibt eine Antwort zurück, wenn das Token gelöscht oder ungültig ist. Ein Beispiel finden Sie im Folgenden:
HTTP/1.1 200 Success Content-Type: application/json;charset=UTF-8
Wenn das Token aus irgendeinem Grund nicht gelöscht werden kann, geben Sie einen 503-Antwortcode zurück, wie im folgenden Beispiel gezeigt:
HTTP/1.1 503 Service Unavailable Content-Type: application/json;charset=UTF-8 Retry-After: HTTP-date / delay-seconds
Google wiederholt die Anfrage später oder wie von Retry-After
angefordert.
Kontoübergreifender Schutz
If you support Cross-Account Protection, your platform can notify Google when access or refresh tokens are revoked. This allows Google to inform users of link state changes, invalidate the token, cleanup security credentials, and authorization grants.
Cross-Account Protection is based on the RISC standard developed at the OpenID Foundation.
A Security Event Token is used to notify Google of token revocation.
When decoded, a token revocation event looks like the following example:
{
"iss":"http://risc.example.com",
"iat":1521068887,
"aud":"google_account_linking",
"jti":"101942095",
"toe": "1508184602",
"events": {
"https://schemas.openid.net/secevent/oauth/event-type/token-revoked":{
"subject_type": "oauth_token",
"token_type": "refresh_token",
"token_identifier_alg": "hash_SHA512_double",
"token": "double SHA-512 hash value of token"
}
}
}
Security Event Tokens that you use to notify Google of token revocation events must conform to the requirements in the following table:
Token revocation events | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
iss |
Issuer Claim: This is a URL which you host, and it's shared with Google during registration. | ||||||||||
aud |
Audience Claim: This identifies Google as the JWT recipient. It
must be set to google_account_linking . |
||||||||||
jti |
JWT ID Claim: This is a unique ID that you generate for every security event token. | ||||||||||
iat |
Issued At Claim: This is a NumericDate value
that represents the time when this security event token was created. |
||||||||||
toe |
Time of Event Claim: This is an optional
NumericDate value that represents the time at which the
token was revoked. |
||||||||||
exp |
Expiration Time Claim: Do not include this field, as the event resulting in this notification has already taken place. | ||||||||||
events |
|
For more information on field types and formats, see JSON Web Token (JWT).