Yadis/XRI and OpenID4. Yadis protocol Yadis protocol とは何か http:// yadis.org/wiki/What_is_Yadis 与えられた URL からどのようなサービスが利用出来るかを提供する為のプロトコル SSO を提供するような認証サービスとか プロフィール交換やフォームの補完の為のサービス ブログのアンチスパムとか つまり URL から使えるサービスを discovery する為のプロトコル 5. Yadis protocol OpenID における Yadis protocol の位置づけ OpenID Authentication 2.0 の discovery に採用された。 [7.3 discovery] XRI ならば XRI Proxy Resolver を介して XRDS 文書が返って来る URL ならば最初に Yadis protocol で試してみる。結果は XRDS 文書 以上がダメなら旧来どおり HTML ベースの discovery 6. Yadis protocol 動作概要 Yadis ID(URL ないしは XRI) から実際に Y アクセスして Resource Descriptor URL を何らかの方法で得る Resource Descriptor URL にアクセスすると XRDS 文書が得られる XRDS 文書を見ると Yadis ID にひもづく利用可能なサービス一覧を取得出来る 7. Yadis protocol 重要な用語 (1) Yadis User Yadis ID を持ってるユーザー Yadis URL Yadis ID とほぼ等価。 Yadis ID が URL なら一致、 XRI のような物ならば XRI から変換した URL Yadis Resource Yadis protocol を使って複数のサービスの所在を提供するシステムの事。 OpenID で言えば OpenID Provider がそれに当たる 8. Yadis Protocol 重要な用語 (2) Yadis document Yadis Resource Descriptor を含む XML 文書 Yadis Resource Descriptor Yadis document の要素。 Yadis ID を使う事が出来るサービスを識別する為に用いる まぁ大体 Yadis document と同じ意味 Resource Descriptor URL Yadis document の所在 9. Yadis protocol Yadis protocol sequence Yadis ID へ GET or HEAD X-XRDS-Location を meta 要素で持つ X-XRDS-Location をレスポンスヘッダで持つ X-XRDS-Location ヘッダを含む Or / And Content-Type が application/xrds+xml 文書の mimetype が application/xrds+xml Yadis Document (XRDS document) Resource Descriptor URL に GET X-XRDS-Location ヘッダがある X-XRDS-Location ヘッダがない HEAD の場合で meta 要素にあり、他が該当しない場合は改めて GET を行う 10. Yadis protocol Yadis document 概要 ルート要素は XRDS 要素 XRDS 要素の子要素は XRD 要素 XRD 要素の子要素は Service 要素 Service 要素の子要素は Type , URI 要素 Service 要素 , URI 要素は priority 属性を持っても良い priority は小さい数値ほど優先 Service 要素の中にそのサービス固有の要素を含めても良い 11. Yadis protocol Yadis document の例 $ curl -H "Accept: application/xrds+xml" http://zigorou.myopenid.com/ <?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/signon</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type> http://schemas.openid.net/pape/policies/2007/06/phishing-resistant </Type> <Type>http://openid.net/srv/ax/1.0</Type> <URI>http://www.myopenid.com/server</URI> <LocalID>http://zigorou.myopenid.com/</LocalID> </Service> <!-- 中略 --> </XRD> </xrds:XRDS> 12. Yadis protocol Yadis document 中の要素 Service 要素 具体的にサービスが提供している内容を記述する Type 要素 Service で対応している物をバージョンを明記して指定する http://specs.openid.net/auth/2.0/signon OpenID Authentication 2.0 に対応してるよって事です URI 要素 そのサービスに必要な URI OpenID の場合だと OP End Point URL になる 13. Yadis protocol Yadis の有用性 HTML Based discovery で出来ない事は全て有用性と考えられる 異なる認証サービスや ID にひもづくサービスを列挙する事が出来る 特定のサービスでも細かな Type 要素の指定によって、具体的にどのような機能を持っているかを RP が判別出来る c.f.) Attribute Exchange(AX) に対応してるかどうか サービス固有の要素を指定する事によってより具体的な記述が可能 14. Yadis の問題点 OpenID Provider 側で余計な実装が増える こと OpenID Provider としてだけ動作するのであれば、 Yadis protocol に対応する必然性は無い ( 旧来の HTML Base で構わない ) その先に XRDS と言う Yadis 文書より複雑な仕様がある>< [XRI Resolution 2.0] Yadis が規定している要素よりももっといっぱいある orz... 16. XRI and i-name XRI とは? IRI[RFC 3987]/URI[RFC 3986] のシンタックスを踏襲 抽象的な「名前」を具体的な「場所」を指し示すようにデザインされた識別子 何故抽象的にする必要性があるのかがまだ理解出来ない =nat さんが飲み会で補足説明してくれるハズ 場所にはどのような物があるのか http(s) 以外を指し示す事も可能 ( 最終的に URI に変換できるから ) http(s) 以外に何に使うの? 17. XRI and i-name OpenID における XRI の位置づけ OpenID Authentication 2.0 で XRI を Identifier として使えるようになった c.f.) xri://=zigorou XRI は XRI Proxy Resolver を介して、 URI に変換され、その URI が指し示すリソースが XRDS 文書を返す ここで初めて OP EndPoint とかが分かる Yadis の例と同じだと考えて良い 18. XRI and i-name XRI Syntax (1) - Basic XRI の基本的な構造 ( ざっくり版 ) [“xri://”]?authority??[”/” path]?[”?” query]?[”#” fragment] XRI Syntax 2.0 に書いてあります ABNF 記法 と言う訳で URI と同じような構成 但し拡張されたシンボルやデリミタが多数ある また相対パス指定が出来るので Resolution が必須 19. XRI and i-name XRI Syntax (2) - XRI Authority absolute-XRI = [xri://] xri-hier-part [“?” iquery] xri-hier-part = ( xri-authority / iauthority) xri-path-abempty xri-authority = gcs-authority / xref-authority gcs-authority = pgcs-authority / rgcs-authority pgcs-authority = rgcs-char xri-segment rgcs-char = “ = ” / “ @ ” / “ + ” / “ $ ” 20. XRI and i-name XRI Syntax (3) - Global Context Symbol Authority “ =” は Person 個人を指し示します “ @” は Organization 組織を指し示します “ +” は Generic public 特に何かを制御するような識別子ではなく、特定の同意の下に表現されている “ $” は Standard body XRI の他の技術仕様の namespace や、 OASIS が規定している他の技術仕様を指し示す為のシンボル 21. XRI and i-name i-name GCS Authority のうち” @” と” =” で表される XRI の事と言って良さそう =nat さん合ってますか? w i-name の取得が出来て、 i-name から利用出来る各種サービス (i-service) を提供するプロバイダを i-name provider と言う 22. XRI and i-name i-name example gcs-authority part は英数字以外は” .”, “-” が許されている =zigorou.masuda =zigorou-masuda @cybozu.labs @cybozu-labs 末尾は英数字のみ =zigorou.masuda- こういうのはダメ! 23. XRI and i-name Community i-name gcs authority part 以下に” *” で Community i-name と言うサブアカウントみたいなのを定義出来る =zigorou*son @cybozu.labs*zigorou @hatena*ZIGOROu 24. XRI and i-name XRI Proxy Resolver http://xri.net/ xri-no-scheme xri-no-scheme = xri-hier-part [ "?" iquery ] [ "#" ifragment ] http://xri.net/=zigorou/ curl -H “Accept: application/xrds+xml” http://xri.net/=zigorou/ で XRDS 文書が返ってくる どうも http://beta.xri.net/ も同様の機能があるっぽぃ より高機能に思えるが使い方が書いてあるオンラインリソースを見つけられない>< 25. XRI and i-name i-service i-name プロバイダが提供しているサービス SSO, Contact, Forwarding Contact サービスは i-name 間でやり取りできるメールのような物 xri://=zigorou/(+contact) Forwarding はリダイレクトサービス xri://=zigorou/(+blog) 26. XRI and i-name XRI / i-name の有用性 i-nameプロバイダは基本的にエスクロー(仲介)サービスとしてクリアしなければならない課題が多いので、逆に言えば信頼できるプロバイダだと言える i-serviceで提供されているようなcontactサービスなどは非常にソーシャルな機能である Community i-nameを使えばさらにlow levelなi-nameを他者に提供出来る 27. XRI and i-name XRI の欠点 基本的に有償 その性質上止むを得ないとしても Web の世界では余り受け入れられそうにない 一応無償のもある freexri.com xrid.net 最終的には xri.net で提供している XRI Proxy Resolver に問い合わせなければならない (DNS のような仕組みでは無さそう ) シングルポイントじゃないか? 仕様が余りに複雑すぎる XRI Relative Reference の解決 Local XRI Resolver 現状 XRI の仕様をまともに impl してる RP ライブラリは無さそう 28. XRI and i-name 参考となる Web 上のリソース http://yadis.org/wiki/What_is_Yadis http://dev.inames.net/wiki/Main_Page http://iss.xdi.org/moin.cgi http://www.inames.net/ http://www.oasis-open.org/committees/download.php/15376 http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.html