私用によりここのところ更新できていなかったので、他の方が良い解説をされているようです。
それでは、URLやHTTP Headerに注目してこのアカウント連携を確認してみましょう。
Google OpenIDを用いてFlickrアカウントを作成/ログインするときの流れを追った
まずは、Flickrのログイン画面で「」をクリックします。
あ、念のため言っておくと、皆さん知ってるかどうかわかりませんが、この画面のドメインは「login.yahoo.com」です。
つまり、Y!Incがこの画面を持っているということです。
Googleのロゴが出てきましたね。
今後、ここに他のOpenID OPもしくはFacebook,twitterなど増えるのでしょうか。
さっそくクリックしたときのHTTP Headerを追ってみましょう。
https://open.login.yahoo.com/openid/yrp/signin?idp=google &ts=(クリックしたときのタイムスタンプ) &.intl=us &.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%2Fvalidate%3F.src%3Dflickrsignin%26.pc%3D8190%26.scrumb%3D0%26.pd%3Dc%253DJvVF95K62e6PzdPu7MBv2V8-%26.intl%3Dus%26.done%3Dhttp%253A%252F%252Fwww.flickr.com%252Fsignin%252Fyahoo%252F%253Fredir%253D%25252Fphoto_grease_postlogin.gne%25253Fd%25253Dhttp%25253A%25252F%25252Fwww.flickr.com%25252F &rpcrumb=(署名的な文字列なので隠す)
ここでのリンク先は、「open.login.yahoo.com」です。
これはY!IncのOpenID OPの処理をしているサーバーです。
idpがGoogleで、このあとFlickrにログインしようとしていますよってのがパラメータから見てとれます。
そのあと、GoogleにOpenIDのリクエストが送られています。
https://www.google.com/accounts/o8/ud?openid.mode=checkid_setup &openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0 &openid.realm=https%3A%2F%2Fopen.login.yahoo.com &openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select &openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select &openid.return_to=https%3A%2F%2Fopen.login.yahoo.com%2Fopenid%2Fyrp%2Freturn_to%3Fsid%3D(セッションっぽい文字列) &openid.ax.type.em=http%3A%2F%2Faxschema.org%2Fcontact%2Femail &openid.ax.type.lg=http%3A%2F%2Faxschema.org%2Fpref%2Flanguage &openid.ax.type.co=http%3A%2F%2Faxschema.org%2Fcontact%2Fcountry%2Fhome &openid.ax.type.fn=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffirst &openid.ax.type.ln=http%3A%2F%2Faxschema.org%2FnamePerson%2Flast &openid.ax.type.gid=http%3A%2F%2Fwww.google.com%2Faccounts%2Fapi%2Ffederated-login%2Fid &openid.ax.required=em%2Clg%2Cco%2Cfn%2Cln%2Cgid &openid.ax.mode=fetch_request &openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0 &openid.ui.mode=popup &openid.ui.icon=true &openid.ns.ui=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fui%2F1.0 &openid.pape.max_auth_age=0 &openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0 &openid.assoc_handle=(アソシエーションハンドルの文字列) &hl=en
長いですね。
整理しましょう。
- return_to : https://open.login.yahoo.com/openid/yrp/return_to?sid=(セッションっぽい文字列)
- Extension : AX,UI(popup),PAPE
つまり、Y!IncがRPとなり、GoogleにOpenIDのリクエストを送っているわけです。
それでは、画面を続けてY!Incに返っていきましょう。
https://open.login.yahoo.com/openid/yrp/return_to?sid=22cc4f559454332d7e0180c9410bba7e POSTの内容 openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0 &openid.mode=id_res &openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fud &openid.response_nonce=2010-11-05T08%3A50%3A40ZDHkJy6GIpmeo1A &openid.return_to=https%3A%2F%2Fopen.login.yahoo.com%2Fopenid%2Fyrp%2Freturn_to%3Fsid%3D22cc4f559454332d7e0180c9410bba7e &openid.assoc_handle=(長い文字列) &openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ext1%2Cns.ext2%2Cext1.mode%2Cext1.type.fn%2Cext1.value.fn%2Cext1.type.gid%2Cext1.value.gid%2Cext1.type.em%2Cext1.value.em%2Cext1.type.lg%2Cext1.value.lg%2Cext1.type.ln%2Cext1.value.ln%2Cext1.type.co%2Cext1.value.co%2Cext2.auth_time%2Cext2.auth_policies &openid.sig=(署名の文字列) &openid.identity=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawmK8PiqipM8mUG4sNAU4wzVOvYQqKke2I4 &openid.claimed_id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawmK8PiqipM8mUG4sNAU4wzVOvYQqKke2I4 &openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0 &openid.ext1.mode=fetch_response &openid.ext1.type.fn=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffirst &openid.ext1.value.fn=Ryo &openid.ext1.type.gid=http%3A%2F%2Fwww.google.com%2Faccounts%2Fapi%2Ffederated-login%2Fid &openid.ext1.value.gid=(gidの文字列) &openid.ext1.type.em=http%3A%2F%2Faxschema.org%2Fcontact%2Femail &openid.ext1.value.em=(メアド) &openid.ext1.type.lg=http%3A%2F%2Faxschema.org%2Fpref%2Flanguage &openid.ext1.value.lg=en &openid.ext1.type.ln=http%3A%2F%2Faxschema.org%2FnamePerson%2Flast &openid.ext1.value.ln=Ito &openid.ext1.type.co=http%3A%2F%2Faxschema.org%2Fcontact%2Fcountry%2Fhome &openid.ext1.value.co=JP &openid.ns.ext2=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0 &openid.ext2.auth_time=2010-11-05T08%3A49%3A27Z &openid.ext2.auth_policies=http%3A%2F%2Fschemas.openid.net%2Fpape%2Fpolicies%2F2007%2F06%2Fnone &openid.ns.ext3=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fui%2F1.0 &openid.ext3.mode=popup
普通にOpenIDのレスポンスが返ってきましたね。
このあと、なんだかんだやったあとにFlickrに戻ります。
よくわからないので、きっとY!IncとFlickrの間はもともと独自のしくみでつながっているのでしょう。
前からありますしね。
上記リンクページによると、足りない情報とかがある場合はY!Inc上のページで情報を補完入力させるページが表示されるっぽいですね。
なぜ私の場合でなかったのか・・・は知りません。
まぁ、とりあえず、ここまででRPがY!Incであることがわかったのではないでしょうか。
ここで、Y!Incのアカウント状態を見てみましょう。
Y!Incのトップページにアクセスしても、https://login.yahoo.com/config/login ここにアクセスしても、ログイン状態にはなりません。
つまり、ここまでの処理はY!Incが行っているものの、自分たちのログイン状態には影響ないようにしていると思われます。