2008-05-22
Attribute Exchange のメモ
いわゆる OpenID の属性交換拡張についての私的なメモです。
仕様
主要なもの。
- Final: OpenID Attribute Exchange 1.0 - Final
- Draft: Attribute Properties for OpenID Attribute Exchange
- AX で使えるプロパティ一覧
- no title
- こちらはコミュニティベースで使えるプロパティ一覧を定義している
多少関連する仕様。
- Draft: Language Tags for OpenID Values
- Draft: Identity Attribute Metadata - Draft 01
- Draft: OpenID Attribute Types - Draft 02
現時点で AX をサポートしている OP
主要な OpenID Provider から対応している OP は自分が(ざっと)確認した感じでは下記の二つだけっぽぃです。
世界にどういう OP があるかを知りたい人は、
辺りから見ると良いです。
対応状況
実際に試してみた結果です。
HTTP method 別
sxipper は Discovery した後に UserAgent を OP にリダイレクトさせた場合は、華麗にスルーされた。(AXだけ)
一方myopenid.comはどちらでも行けた。
| OP | GET method | POST method |
| myopenid | ○ | ○ |
| sxipper | × | ○ |
少なくとも現時点で確実なのはPOSTであって、ブラウザで外部ドメインにPOSTするって事はformを使わないとダメだって事ですね。
しかも Discovery して associate が終わった後に作った checkid_setup/checkid_immediate 用のリクエストURL に沿った形で post するように form を作らないとダメです。
またこの form を JavaScript で動的に生成して POST したい感じなんだけど、万が一 XSS があったとすると意図せぬ結果になるかもしれないので、サーバーサイドで処理した方が確実かなと思います。*1
schema 別
これが非常に罠過ぎる件。
myOpenID supports only some attributes that can be exchange with OpenID Attribute Exchange, but you should care about Type URI, because myOpenID doesn't support Type URI described on "http://www.axschema.org/types/". You should specify Type URI with "http://schema.openid.net/" instead. [ruby
と rakuto さんが書いている通り、myopenid は schema.openid.net ベースの属性型指定をしないとノーリアクションです。
| OP | schema.openid.net | openid.net/schema | axschema.org |
| myopenid | ○ | × | × |
| sxipper | ○ | ○ | ○ |
また OpenID の spec-ml でも話題に挙がっていて、
要望があるなら議論するぜーって段階で止まってる。
schema.openid.net で定義されている型一覧
と言うものがどうも僕が探した限りだと spec には無いんですよねぇ。*2
どうも axschema.org で定義された物の authority 部を schema.openid.net に代えた物がそのまま通るようです。
だからどんな値があるかは、no title で見て、適宜置換すればOKっぽぃ。
TODO
- SREG と共に使えるかどうか確かめる
- checkid_immediate でも問題ないかどうか確かめる
- @IT の記事化する(ぉぃ
と言う訳で次回は SREG/AX についてまとめようかなとか思ってたりしてます。
まとめ
少なくとも現時点で RP 側で AX を採用するってコストから考えると割りに合わなくて、簡単で普及している SREG を使うべきかなと思います。*3
また二点ほど、
- OP への checkid_setup/checkid_immediate は POST で行うのが無難
- schema は schema.openid.net を使うのが無難
が現時点でのバッドノウハウのようです。
SEE ALSO
- AttributeExchangeHowTo - openid4java - How to transfer attributes using the Attribute Exchange extension. - OpenID 2.0 Java Libraries - Google Project Hosting
- openid4java での AX の例。ちょっと古いですけど。
- no title
- Sxipper が提供してるAXのデモ。しかしemailのverificationがうんにゃらで最後怒られる!?
追記 (2008-05-23T01:01:21+09:00)
id:tzmtk さんに twitter で教えて貰ったんですが、
で OpenID Authentication 2.0 対応な OP 一覧が見れるみたいです。
が、claimid.comは対応してないと思うんだけどリストに入ってるのが謎。
*1:もちろんサーバーサイドでやろうが XSS が確実に防げると言う訳じゃないですが
*2:もし拠り所があれば教えて下さい。
*3: 両方同時にリクエストした場合の挙動を調べていないので、何とも言えませんが。ライブラリ側で簡単に出来るようになっていればその限りじゃないです。
- 37 http://www.google.co.jp/search?q=OpenID+AX&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 36 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=v2L&q=javascript-mode+emacs&btnG=検索&lr=lang_ja
- 34 http://reader.livedoor.com/reader/
- 21 http://q.hatena.ne.jp/1213665307
- 21 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLJ,GGLJ:2006-35,GGLJ:ja&q=template+toolkit+encode
- 15 http://www.google.co.jp/search?hl=ja&q=OpenID+Attribute+Exchange&lr=
- 14 http://tophatenar.com/ranking/subscriber/1
- 13 http://d.hatena.ne.jp/amachang/about
- 13 http://www.google.co.jp/search?hl=ja&source=hp&q=OpenID+ax&lr=&aq=f&oq=
- 13 http://www.google.co.jp/search?q=OpenID+AX&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a


