GoogleのOpenID RPになったのはFlickrというよりYahoo!Incですよ

私用によりここのところ更新できていなかったので、他の方が良い解説をされているようです。

それでは、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にログインしようとしていますよってのがパラメータから見てとれます。
そのあと、GoogleOpenIDのリクエストが送られています。

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

長いですね。
整理しましょう。

つまり、Y!IncがRPとなり、GoogleOpenIDのリクエストを送っているわけです。
それでは、画面を続けて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が行っているものの、自分たちのログイン状態には影響ないようにしていると思われます。

わかったこと

  • 今回の対応で、Googleが提供しているOpenIDのRPであるのはY!Incである
  • Y!IncとFlickrの間はもともと独自のしくみでつながっているため、Flickr側は特に変わったことしていない?

ということは、Y!IncはRPの機能を実装しているのだから、自分たちのログイン機能にも連携可能=いつでもRPになれるということとも考えられます。
今後がいろいろと楽しみですね。