2016-06-01 11 views
3

ステップ1:私は自分のGmailアカウントにログインしました。ブラウザは実際にaccounts.google.comにリダイレクトされます。だから私はそこにログインし、ログインしたgmailにリダイレクトされたyoutubeがリダイレクトなしでGmailアカウントにログインする方法は?

ステップ2:今ブラウザでは、タイプyoutube.comです。リダイレクトがなければ、私はgmailアカウントでYouTubeにログインします。

Youtubeは完全に異なるドメインです。リダイレクトなしでaccounts.google.comとどのように通信しますか? Chromeデベロッパーツールでネットワークリクエストを確認しましたが、このようなリダイレクトは表示されません。

答えて

6

これはGmailのログインaccounts.googleにリダイレクト)中央SSOドメインを使用して、ユーチューブやGmailのような2つのO複数のウェブサイト間のクロスドメイン通信を可能にする技術的解決スキーム(accounts.google.com)

1 .comはあなたを特定し、アカウント情報で認証トークン(JWT形式)を発行します。トークンは認証トークンを探しているブラウザのlocalStorage

//Store the Json Web token with accountInfo in localStorage 
localStorage.setItem('tokenId',jwt); 

2)YouTubeのチェックaccounts.google.comのlocalStorageに格納されています。見つかった場合は、入力することができます。

中間ドメインaccounts.google.comを使用して、クッキーとlocalStorageをドメイン間で共有することができます。ホームページにはiframeが埋め込まれており、クッキーにアクセスしてメインにメッセージを送信します。

//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); 

のiframeがロードされ、親ページにJWTとのメッセージを送信し

window.parent.postMessage(jwt, sourceDomain); 

親ページがトークン

//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... 
} 

を受けるので、domain1.comとdomain2.comすることができますこの方法でcookie/localStorageを共有します。 Chrome-> Inspect-> Resources->ローカルストレージを開き、アカウント情報がaccounts.google.comに表示されます(多くのデータフィールドがあります)。

JWTは自己完結型で、サーバーキーで署名されています。これは一般的なスキーマで、このようにSSOの実装を見にhttps://github.com/Aralink/ssojwtをチェックアウトし、異なるブラウザ

ですべての問題を解決するにはユーザーデータが含まれており、発行体の整合性とアイデンティティは

を確認することができますGoogleによって使用されます。 GmailやYouTubeのコードを閲覧すると、多くのものやその他の追加のフィールドが表示されます。 Googleはまた、起源の制限を追加します。 accounts.google.com SSOを使用するには、Google Appsに登録する必要があります。統合IDを取得し、認可された起源を指定してください。

+0

Gmailにログインして初めてYouTubeにアクセスしたときのlocalStorageの読み方を教えてください。 – chanchal118

関連する問題