ヤフーは1月30日、オープンな認証規格「OpenID」の発行サービスをベータ版として開始した。OpenIDを利用すれば外部サイトでもYahoo! JAPAN IDが利用できるようになると同時に、ウェブサービスの開発者はヤフーが抱える2000万ID以上のアクティブユーザーに向けたサービスの開発が可能となる。
予想より早く開始しましたね。 YahooのOpenIDはセキュリティに配慮しているほか、既存OpenIDプロバイダと違う点も見られます。
- OpenID 2.0仕様
- ログインに使用するID
- YahooJAPAN IDの隠蔽
OpenID対応サイトでログインする際は、「yahoo.co.jp」と 入力するだけでよく、YahooサイトでYahooのIDとパスワードを入力して認証します。 OpenID対応サイトには、「https://me.yahoo.co.jp/a/tsEJe4MCcbXZyYq0VzUTfWemVtG0」のような、YahooのIDを含まないOpenIDが通知される仕組みです。
ということで早速ログインを試みたところ、「このサイトにログインできません。」というエラーが表示されました。 どうもリダイレクト時にreturn_to?のホスト確認をしているらしく、 「localhost」などのテスト環境は弾かれます。 正式なドメインからアクセスすると成功しました。
以下はYahooから返信される情報を一部抜粋したものです。
array ( 'openid_ns' => 'http://specs.openid.net/auth/2.0', 'openid_mode' => 'id_res', 'openid_return_to' => 'http://www.softama.com/openid_test/result.php?janrain_nonce=2008-01-31T02%3A31%3A04ZrWi9Zr', 'openid_claimed_id' => 'https://me.yahoo.co.jp/a/tsEJe4MCcbXZyYq0VzUTfWemVtG0#6c56c', 'openid_identity' => 'https://me.yahoo.co.jp/a/tsEJe4MCcbXZyYq0VzUTfWemVtG0', 'openid_assoc_handle' => 'YPKehsnKyC3deS46Zt4oZQqrkYd3CWVx5b6vGbLq24Nc.lJ0mpXD3D3GOhCURjzvb3VRkIkJgCeqQBUPpht25UJDfslk6QNg4Q0F5qIuCOI04zPYG_BXskrS9aHgmkTYkQ--', 'openid_realm' => 'http://www.softama.com/openid_test/', 'openid_response_nonce' => '2008-01-31T02:31:36Z4vQ0bDrKtR9L4I52M10eFeQceUophyRhaQ--', 'openid_signed' => 'assoc_handle,claimed_id,identity,mode,ns,op_endpoint,response_nonce,return_to,signed', 'openid_op_endpoint' => 'https://open.login.yahooapis.jp/openid/op/auth', 'openid_sig' => 'N6a5hPDj4L36B5jrEgMoZG4luiE=', )
identityはYahooの登録情報ページから参照できるOpenIDと同じです。 ところが、claimed_idには#6c56cのような末尾が付いていました。(#以降がころころ変わるようなら問題ですが、多分大丈夫でしょう。 少し様子を見るつもりです。)
追記: Discover時に取得できる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>
<URI>https://open.login.yahooapis.jp/openid/op/auth</URI>
</Service>
</XRD>
</xrds:XRDS>
この時点ではclaimed_idが判明していません。 従って、リダイレクト時に要求するclaimed_idとidentityには「http://specs.openid.net/auth/2.0/identifier_select」 を設定しています。
Yahooのような多くのユーザを抱えるサイトがOpenIDを発行することで、これからOpenIDに対応するサイトが増えていくことでしょう。 今後もOpenIDの動向に注目したいと思います。