Attribute Exchange のメモ
いわゆる OpenID の属性交換拡張についての私的なメモです。
仕様
主要なもの。
- Final: OpenID Attribute Exchange 1.0 - Final
- Draft: Attribute Properties for OpenID Attribute Exchange
- AX で使えるプロパティ一覧
- http://www.axschema.org/types/
- こちらはコミュニティベースで使えるプロパティ一覧を定義している
多少関連する仕様。
現時点で 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.
と 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 に代えた物がそのまま通るようです。
だからどんな値があるかは、http://www.axschema.org/types/ で見て、適宜置換すればOKっぽぃ。
TODO
と言う訳で次回は SREG/AX についてまとめようかなとか思ってたりしてます。
まとめ
少なくとも現時点で RP 側で AX を採用するってコストから考えると割りに合わなくて、簡単で普及している SREG を使うべきかなと思います。*3
また二点ほど、
- OP への checkid_setup/checkid_immediate は POST で行うのが無難
- schema は schema.openid.net を使うのが無難
が現時点でのバッドノウハウのようです。
SEE ALSO
- Google Code Archive - Long-term storage for Google Code Project Hosting.
- openid4java での AX の例。ちょっと古いですけど。
- https://verify.sxip.com/demorp/
- Sxipper が提供してるAXのデモ。しかしemailのverificationがうんにゃらで最後怒られる!?