米政府がなんとかいう記事が出てましたが、それと時を同じくしてY!IncのOpenIDがUI,OAuth Extensionへの対応をしたようなので、まとめておきます。
■ Discovery
yahoo.comをDiscoveryすると、たくさんの拡張に対応しているようです。
もちろん、全ての拡張を一般開発者が作成したRPに提供しているわけではなく、ホワイトリスト形式で提供しているものもありそうです。
$ curl http://open.login.yahooapis.com/openid20/www.yahoo.com/xrds <?xml version="1.0" encoding="UTF-8"?> <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns:openid="http://openid.net/xmlns/1.0" xmlns="xri://$xrd*($v*2.0)"> <XRD> <Service priority="0"> <Type>http://specs.openid.net/auth/2.0/server</Type> <Type>http://specs.openid.net/extensions/pape/1.0</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://openid.net/srv/ax/1.0</Type> <Type>http://specs.openid.net/extensions/oauth/1.0</Type>★ <Type>http://specs.openid.net/extensions/ui/1.0/lang-pref</Type>★ <Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>★ <Type>http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier</Type>☆ <Type>http://www.idmanagement.gov/schema/2009/05/icam/no-pii.pdf</Type>☆ <Type>http://www.idmanagement.gov/schema/2009/05/icam/openid-trust-level1.pdf</Type>☆ <Type>http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63V1_0_2.pdf</Type>☆ <URI>https://open.login.yahooapis.com/openid/op/auth</URI> </Service> </XRD> </xrds:XRDS>
今回対応が始まったExtensionについては★のあたりです。
OpenID UI Extension
http://specs.openid.net/extensions/ui/1.0/lang-pref
http://specs.openid.net/extensions/ui/1.0/mode/popup
Googleとは異なり、icon対応はしていないようです。
OpenID OAuth Extension
下の4個については、少し前から導入していたようですが、この辺の記事と関係があるもののような気がします。
- Yahoo!, PayPal, Google, Equifax, AOL, VeriSign, Acxiom, Citi, Privo, Wave Systems Pilot Open Identity for Open Government | OpenID
- http://developer.yahoo.net/blog/archives/2009/09/openid_opengovernment.html
- http://informationcard.net/blog/open-identity-initiative-2009-09-09
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier
http://www.idmanagement.gov/schema/2009/05/icam/no-pii.pdf
http://www.idmanagement.gov/schema/2009/05/icam/openid-trust-level1.pdf
http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63V1_0_2.pdf
こちらをちゃんと解説するには少々勉強が必要なので、もう少し時間をください。。。
■ Pop Up : UI
それでは、実際に画面を見てみましょう。
動作確認用のURLはこちらです。
ちがうのはこのパラメータがついてるかどうかです。
&openid.ns.ui=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fui%2F1.0
&openid.ui.mode=popup
しかし、今試した範囲では、Extensionのパラメータつけてもつけなくてもpop upでいけるような小さい画面になってました。
そういえば、MySpaceも同じような仕様です。
Login Pageはこうなります。
ログイン画面はすごくシンプルですね。
左側にRPの名前、RPにサインインするんだってことが説明してあります。
その次は、Consent Pageが表示されます。
■ Language Preference : UI
いちおう、Language Preferenceのほうも試してみましょう。
こんなパラメータをつけてやります。
まずは、イタリア語を指定。
&openid.ui.lang=it-IT
次は、フランス語を指定。
&openid.ui.lang=fr-FR
詳細はここ見てください。
Implementers' Draft: OpenID User Interface Extension 1.0 - DRAFT 0.5
■ UI Extension : AuthN Flow
認証フローに変更はありません。
Y!に未ログイン : RP Page → Y! Login Page → Y! Concent Page → RP return_to page
Y!にログイン済み : RP Page → Y! Consent Page → RP return_to page
ここは、Googleと似ています。
■ OAuth Extension : UI
Hybridのほうも、実際に画面を見てみましょう。
こんなパラメータをつけます。
&openid.ns.oauth=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Foauth%2F1.0
&openid.oauth.consumer=(ConsumerKey)
動作確認用URL
Login Pageはこうなります。
これまたログイン画面はすごくシンプルですね。
でも、Consumerの名前とProfileのデータを渡すことは示しています。
Consent Pageはこうなります。
ここでは、Consumerの名前、アクセスさせるデータが表示されます。
おそらく、Yahooではrealm/return_toとConsumerKey登録の際のドメインを確認していると思われます。
■ OAuth : Authentication Flow
こちらの認証/認可画面はOpenIDよりも本人確認が厳しいものになっています。
Y!に未ログイン : RP Page → Y! Login Page → Y! Consent Page → RP return_to page
Y!にログイン済み : RP Page → ★Y! PW Verify Page★ → Y! Consent Page → RP return_to page
Y!Incは少し前に、OAuthのUIをシンプルなものに変更しました。
今回はそちらと揃えてくると思いきや、また別なデザインになりました。
きっと、どこかでfacebook/MySpaceのような1枚の画面にできない理由が出て来たのでしょうか。
もしかして、OAuthもそのうち2枚の画面にデグレする?どうなるのかわかりません。
■ まとめ
画面サイズは小さくなり、Hybrid対応という点ではGoogle,MySpaceに追いついた。
しかし、Facebookのように1画面で処理が終わらせることは難しそう。
Hybridにしてまで使わせたいAPIってなんだろう?
今の流れからだとActivityStream?ということはUpdates APIとの組み合わせによる効果を期待しているのかな。
■ 残課題
- XRDSに記載されている他の拡張の調査
- Gitにあげてるサンプルコードの修正
- OAuth Extensionのサンプルコード作成
- idconの準備
やることたくさんありますね。