Dies ist das technische Lösung Schema Cross-Domain-Kommunikation zu ermöglichen, zwischen zwei os mehr Websites wie YouTube oder gmail mit einer zentralen sso Domain (accounts.google.com)
1) Anmeldung in gmail Umleitungen an accounts.google .com, identifiziert Sie und geben Sie ein Authentifizierungs-Token (JWT-Format) mit Ihren Kontoinformationen aus. Das Token wird in Browser local gespeichert
//Store the Json Web token with accountInfo in localStorage
localStorage.setItem('tokenId',jwt);
2) Youtube prüft accounts.google.com localstorage für Auth-Token suchen. Wenn gefunden, können Sie eingeben.
Cookies und localStorage können zwischen Domänen mit einer Zwischendomäne accounts.google.com
geteilt werden. Auf der Homepage ist ein iframe
eingebettet, der auf Cookies zugreift und Nachrichten an die Hauptstelle sendet.
//Create iframe when page is loaded pointing to sso domain. For example in gmail.com and youtube.com pointing to accounts.google.com
var iframe = document.createElement('iframe');
iframe.style.display = "none";
iframe.src = 'https://sso.domain.com/sso.html?sourceDomain=...;
iframe.id = 'sso.iframe';
document.body.appendChild(iframe);
Wenn iframe geladen wird, sendet eine Nachricht mit dem jwt zu übergeordneten Seite
window.parent.postMessage(jwt, sourceDomain);
Die übergeordnete Seite der Token
//Message listener for SSO events (created by the sso.iframe)
addEventListener("message", _listener, false);
function _listener(event){
//origin check
if ( sourceDomain.lastIndexOf(event.origin) == -1){
return;
}
var jwt = event.data
//do something with the token...
}
empfängt So domain1.com und domain2.com können Teilen Sie Cookies/localStorage auf diese Weise. Öffnen Sie Chrome-> Inspect-> Resources-> Local storage und Sie sehen zum Beispiel in accounts.google.com die geteilten Informationen (es gibt viele Datenfelder).
JWT ist eigenständig und mit Serverschlüssel signiert. Es enthält die Benutzerdaten und die Integrität und Identität des Emittenten kann
Check out https://github.com/Aralink/ssojwt um zu sehen, eine Implementierung von SSO auf diese Weise, und die Lösung aller Probleme mit den verschiedenen Browsern
Dies ist das allgemeine Schema überprüft werden verwendet von Google. Wenn Sie den Gmail- oder Youtube-Code durchsuchen, sehen Sie viele Dinge und andere zusätzliche Felder. Google fügt außerdem eine Ursprungsbeschränkung hinzu. Wenn Sie das SSO accounts.google.com
verwenden möchten, müssen Sie sich in Google Apps registrieren, eine Integrations-ID erhalten und Ihre autorisierten Ursprünge angeben.
Können Sie bitte angeben, wie diese localStorage gelesen wird, wenn youtube zum ersten Mal nach der Anmeldung bei Google Mail aufgerufen wird? – chanchal118