Google released an upgrade to their OpenID Provider to support the draft OpenID User Interface Extension

今朝、GoogleOpenIDについてのニュースが入ってきました。

簡単に言うと、「GoogleOpenID User Interface Extensionに対応した」ということです。JanRainの話はおいておきます。

何ができる拡張かというと、次の2点です。

  • RPがOPに対して、「ポップアップによる認証要求を送ること」を指定できる
  • RPがOPに対して、「Userが認証時に利用する言語」を指定できる

実際の動作を見てみましょう。
uservoice.comのログイン画面を開いてみます。

http://uservoice.com/session/new

OpenIDというか、OAuthも含めたIDプロバイダセレクタ的なものが左の方にあります。
今回はもちろんGoogleをクリックします。

ポップアップウィンドウが立ち上がり、小さなログイン画面が表示されました。
ここでEmail/PWを入力します。
URLバーが見えるので、フィッシングではないことが確認できますね。

OpenIDの確認画面が表示されました。
Email,国,言語を渡すと言っているのでAXなどの拡張が使われているようです。
「許可」するとポップアップウィンドウが閉じ、もとのページが更新されます。

UXの説明は以上です。
技術的に、UI Extensionをどのように導入しているかを説明します。

まず、GoogleにIndirect Communicationで渡される認証要求の内容を見てみましょう。
どんな拡張を使ってるのかをnamespaceで調べます。

&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0 【1】
&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1【2】
&openid.ns.ui=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fui%2F1.0【3】

3つ使われています。

  1. Final: OpenID Attribute Exchange 1.0 - Final
  2. OpenID Simple Registration Extension 1.1 - Draft 1
  3. Implementers' Draft: OpenID User Interface Extension 1.0 - DRAFT 0.4

【3】が今回のメインのUser Interface Extensionです。
それでは、この拡張に関連するパラメータはどうなっているのでしょうか。

openid.ui.mode=popup

このパラメータにより、uservoice.comはGoogleに対して「ポップアップで画面開くよ」と伝えています。
どうでしょうか。認証要求は非常にシンプルです。

あ、そういえば、Discoveryの結果を確認するのを忘れていました。

$ curl "https://www.google.com/accounts/o8/id"




http://specs.openid.net/auth/2.0/server
http://openid.net/srv/ax/1.0
https://www.google.com/accounts/o8/ud


Specに照らし合わせると、GoogleはUI Extensionに対応することを明示する以下の定義をすべきです。

http://specs.openid.net/extensions/ui/1.0

ということで、Googleは少しずつ拡張の実装を進めていますね。
非常に興味深いです。

最後に、「OpenID User Interface Extension」については、以前書いたこのへんの記事も見てもらえればいいかなと思います。