advertisement

Yadis/XRI and OpenID

50 %
50 %
advertisement
Information about Yadis/XRI and OpenID

Published on March 17, 2008

Author: zigorou

Source: slideshare.net

Description

ミンナニハナイショダヨ
advertisement

Yadis/XRI and OpenID =zigorou Toru Yamaguchi <zigorou@cpan.org>

Agenda Yadis プロトコル XRI と i-name

Yadis プロトコル

XRI と i-name

Yadis protocol Yadis Protocol

Yadis Protocol

Yadis protocol Yadis protocol とは何か http:// yadis.org/wiki/What_is_Yadis 与えられた URL からどのようなサービスが利用出来るかを提供する為のプロトコル SSO を提供するような認証サービスとか プロフィール交換やフォームの補完の為のサービス ブログのアンチスパムとか つまり URL から使えるサービスを discovery する為のプロトコル

Yadis protocol とは何か

http:// yadis.org/wiki/What_is_Yadis

与えられた URL からどのようなサービスが利用出来るかを提供する為のプロトコル

SSO を提供するような認証サービスとか

プロフィール交換やフォームの補完の為のサービス

ブログのアンチスパムとか

つまり URL から使えるサービスを discovery する為のプロトコル

Yadis protocol OpenID における Yadis protocol の位置づけ OpenID Authentication 2.0 の discovery に採用された。 [7.3 discovery] XRI ならば XRI Proxy Resolver を介して XRDS 文書が返って来る URL ならば最初に Yadis protocol で試してみる。結果は XRDS 文書 以上がダメなら旧来どおり HTML ベースの discovery

OpenID における Yadis protocol の位置づけ

OpenID Authentication 2.0 の discovery に採用された。 [7.3 discovery]

XRI ならば XRI Proxy Resolver を介して XRDS 文書が返って来る

URL ならば最初に Yadis protocol で試してみる。結果は XRDS 文書

以上がダメなら旧来どおり HTML ベースの discovery

Yadis protocol 動作概要 Yadis ID(URL ないしは XRI) から実際に Y アクセスして Resource Descriptor URL を何らかの方法で得る Resource Descriptor URL にアクセスすると XRDS 文書が得られる XRDS 文書を見ると Yadis ID にひもづく利用可能なサービス一覧を取得出来る

動作概要

Yadis ID(URL ないしは XRI) から実際に Y アクセスして Resource Descriptor URL を何らかの方法で得る

Resource Descriptor URL にアクセスすると XRDS 文書が得られる

XRDS 文書を見ると Yadis ID にひもづく利用可能なサービス一覧を取得出来る

Yadis protocol 重要な用語 (1) Yadis User Yadis ID を持ってるユーザー Yadis URL Yadis ID とほぼ等価。 Yadis ID が URL なら一致、 XRI のような物ならば XRI から変換した URL Yadis Resource Yadis protocol を使って複数のサービスの所在を提供するシステムの事。 OpenID で言えば OpenID Provider がそれに当たる

重要な用語 (1)

Yadis User

Yadis ID を持ってるユーザー

Yadis URL

Yadis ID とほぼ等価。 Yadis ID が URL なら一致、 XRI のような物ならば XRI から変換した URL

Yadis Resource

Yadis protocol を使って複数のサービスの所在を提供するシステムの事。 OpenID で言えば OpenID Provider がそれに当たる

Yadis Protocol 重要な用語 (2) Yadis document Yadis Resource Descriptor を含む XML 文書 Yadis Resource Descriptor Yadis document の要素。 Yadis ID を使う事が出来るサービスを識別する為に用いる まぁ大体 Yadis document と同じ意味 Resource Descriptor URL Yadis document の所在

重要な用語 (2)

Yadis document

Yadis Resource Descriptor を含む XML 文書

Yadis Resource Descriptor

Yadis document の要素。 Yadis ID を使う事が出来るサービスを識別する為に用いる

まぁ大体 Yadis document と同じ意味

Resource Descriptor URL

Yadis document の所在

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 を行う

Yadis protocol sequence

Yadis protocol Yadis document 概要 ルート要素は XRDS 要素 XRDS 要素の子要素は XRD 要素 XRD 要素の子要素は Service 要素 Service 要素の子要素は Type , URI 要素 Service 要素 , URI 要素は priority 属性を持っても良い priority は小さい数値ほど優先 Service 要素の中にそのサービス固有の要素を含めても良い

Yadis document 概要

ルート要素は XRDS 要素

XRDS 要素の子要素は XRD 要素

XRD 要素の子要素は Service 要素

Service 要素の子要素は Type , URI 要素

Service 要素 , URI 要素は priority 属性を持っても良い

priority は小さい数値ほど優先

Service 要素の中にそのサービス固有の要素を含めても良い

Yadis protocol Yadis document の例 $ curl -H &quot;Accept: application/xrds+xml&quot; http://zigorou.myopenid.com/ <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <xrds:XRDS xmlns:xrds=&quot;xri://$xrds&quot; xmlns:openid=&quot;http://openid.net/xmlns/1.0“ xmlns=&quot;xri://$xrd*($v*2.0)&quot;> <XRD> <Service priority=&quot;0&quot;> <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>

Yadis document の例

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 になる

Yadis document 中の要素

Service 要素

具体的にサービスが提供している内容を記述する

Type 要素

Service で対応している物をバージョンを明記して指定する

http://specs.openid.net/auth/2.0/signon

OpenID Authentication 2.0 に対応してるよって事です

URI 要素

そのサービスに必要な URI

OpenID の場合だと OP End Point URL になる

Yadis protocol Yadis の有用性 HTML Based discovery で出来ない事は全て有用性と考えられる 異なる認証サービスや ID にひもづくサービスを列挙する事が出来る 特定のサービスでも細かな Type 要素の指定によって、具体的にどのような機能を持っているかを RP が判別出来る c.f.) Attribute Exchange(AX) に対応してるかどうか サービス固有の要素を指定する事によってより具体的な記述が可能

Yadis の有用性

HTML Based discovery で出来ない事は全て有用性と考えられる

異なる認証サービスや ID にひもづくサービスを列挙する事が出来る

特定のサービスでも細かな Type 要素の指定によって、具体的にどのような機能を持っているかを RP が判別出来る

c.f.) Attribute Exchange(AX) に対応してるかどうか

サービス固有の要素を指定する事によってより具体的な記述が可能

Yadis の問題点 OpenID Provider 側で余計な実装が増える こと OpenID Provider としてだけ動作するのであれば、 Yadis protocol に対応する必然性は無い ( 旧来の HTML Base で構わない ) その先に XRDS と言う Yadis 文書より複雑な仕様がある>< [XRI Resolution 2.0] Yadis が規定している要素よりももっといっぱいある orz...

Yadis の問題点

OpenID Provider 側で余計な実装が増える

こと OpenID Provider としてだけ動作するのであれば、 Yadis protocol に対応する必然性は無い ( 旧来の HTML Base で構わない )

その先に XRDS と言う Yadis 文書より複雑な仕様がある>< [XRI Resolution 2.0]

Yadis が規定している要素よりももっといっぱいある orz...

XRI and i-name XRI and i-name

XRI and i-name

XRI and i-name XRI とは? IRI[RFC 3987]/URI[RFC 3986] のシンタックスを踏襲 抽象的な「名前」を具体的な「場所」を指し示すようにデザインされた識別子 何故抽象的にする必要性があるのかがまだ理解出来ない =nat さんが飲み会で補足説明してくれるハズ 場所にはどのような物があるのか http(s) 以外を指し示す事も可能 ( 最終的に URI に変換できるから ) http(s) 以外に何に使うの?

XRI とは?

IRI[RFC 3987]/URI[RFC 3986] のシンタックスを踏襲

抽象的な「名前」を具体的な「場所」を指し示すようにデザインされた識別子

何故抽象的にする必要性があるのかがまだ理解出来ない

=nat さんが飲み会で補足説明してくれるハズ

場所にはどのような物があるのか

http(s) 以外を指し示す事も可能 ( 最終的に URI に変換できるから )

http(s) 以外に何に使うの?

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 の例と同じだと考えて良い

OpenID における XRI の位置づけ

OpenID Authentication 2.0 で XRI を Identifier として使えるようになった

c.f.) xri://=zigorou

XRI は XRI Proxy Resolver を介して、 URI に変換され、その URI が指し示すリソースが XRDS 文書を返す

ここで初めて OP EndPoint とかが分かる

Yadis の例と同じだと考えて良い

XRI and i-name XRI Syntax (1) - Basic XRI の基本的な構造 ( ざっくり版 ) [“xri://”] authority  [”/” path] [”?” query] [”#” fragment] XRI Syntax 2.0 に書いてあります ABNF 記法 と言う訳で URI と同じような構成 但し拡張されたシンボルやデリミタが多数ある また相対パス指定が出来るので Resolution が必須

XRI Syntax (1) - Basic

XRI の基本的な構造 ( ざっくり版 )

[“xri://”] authority  [”/” path] [”?” query] [”#” fragment]

XRI Syntax 2.0 に書いてあります

ABNF 記法

と言う訳で URI と同じような構成

但し拡張されたシンボルやデリミタが多数ある

また相対パス指定が出来るので Resolution が必須

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 = “ = ” / “ @ ” / “ + ” / “ $ ”

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 = “ = ” / “ @ ” / “ + ” / “ $ ”

XRI and i-name XRI Syntax (3) - Global Context Symbol Authority “ =” は Person 個人を指し示します “ @” は Organization 組織を指し示します “ +” は Generic public 特に何かを制御するような識別子ではなく、特定の同意の下に表現されている “ $” は Standard body XRI の他の技術仕様の namespace や、 OASIS が規定している他の技術仕様を指し示す為のシンボル

XRI Syntax (3) - Global Context Symbol Authority

“ =” は Person

個人を指し示します

“ @” は Organization

組織を指し示します

“ +” は Generic public

特に何かを制御するような識別子ではなく、特定の同意の下に表現されている

“ $” は Standard body

XRI の他の技術仕様の namespace や、 OASIS が規定している他の技術仕様を指し示す為のシンボル

XRI and i-name i-name GCS Authority のうち” @” と” =” で表される XRI の事と言って良さそう =nat さん合ってますか? w i-name の取得が出来て、 i-name から利用出来る各種サービス (i-service) を提供するプロバイダを i-name provider と言う

i-name

GCS Authority のうち” @” と” =” で表される XRI の事と言って良さそう

=nat さん合ってますか? w

i-name の取得が出来て、 i-name から利用出来る各種サービス (i-service) を提供するプロバイダを i-name provider と言う

XRI and i-name i-name example gcs-authority part は英数字以外は” .”, “-” が許されている =zigorou.masuda =zigorou-masuda @cybozu.labs @cybozu-labs 末尾は英数字のみ =zigorou.masuda- こういうのはダメ!

i-name example

gcs-authority part は英数字以外は” .”, “-” が許されている

=zigorou.masuda

=zigorou-masuda

@cybozu.labs

@cybozu-labs

末尾は英数字のみ

=zigorou.masuda-

こういうのはダメ!

XRI and i-name Community i-name gcs authority part 以下に” *” で Community i-name と言うサブアカウントみたいなのを定義出来る =zigorou*son @cybozu.labs*zigorou @hatena*ZIGOROu

Community i-name

gcs authority part 以下に” *” で Community i-name と言うサブアカウントみたいなのを定義出来る

=zigorou*son

@cybozu.labs*zigorou

@hatena*ZIGOROu

XRI and i-name XRI Proxy Resolver http://xri.net/ xri-no-scheme xri-no-scheme = xri-hier-part [ &quot;?&quot; iquery ] [ &quot;#&quot; ifragment ] http://xri.net/=zigorou/ curl -H “Accept: application/xrds+xml” http://xri.net/=zigorou/ で XRDS 文書が返ってくる どうも http://beta.xri.net/ も同様の機能があるっぽぃ より高機能に思えるが使い方が書いてあるオンラインリソースを見つけられない><

XRI Proxy Resolver

http://xri.net/ xri-no-scheme

xri-no-scheme = xri-hier-part [ &quot;?&quot; iquery ] [ &quot;#&quot; ifragment ]

http://xri.net/=zigorou/

curl -H “Accept: application/xrds+xml” http://xri.net/=zigorou/ で XRDS 文書が返ってくる

どうも http://beta.xri.net/ も同様の機能があるっぽぃ

より高機能に思えるが使い方が書いてあるオンラインリソースを見つけられない><

XRI and i-name i-service i-name プロバイダが提供しているサービス SSO, Contact, Forwarding Contact サービスは i-name 間でやり取りできるメールのような物 xri://=zigorou/(+contact) Forwarding はリダイレクトサービス xri://=zigorou/(+blog)

i-service

i-name プロバイダが提供しているサービス

SSO, Contact, Forwarding

Contact サービスは i-name 間でやり取りできるメールのような物

xri://=zigorou/(+contact)

Forwarding はリダイレクトサービス

xri://=zigorou/(+blog)

XRI and i-name XRI / i-name の有用性 i-nameプロバイダは基本的にエスクロー(仲介)サービスとしてクリアしなければならない課題が多いので、逆に言えば信頼できるプロバイダだと言える i-serviceで提供されているようなcontactサービスなどは非常にソーシャルな機能である Community i-nameを使えばさらにlow levelなi-nameを他者に提供出来る

XRI / i-name の有用性

i-nameプロバイダは基本的にエスクロー(仲介)サービスとしてクリアしなければならない課題が多いので、逆に言えば信頼できるプロバイダだと言える

i-serviceで提供されているようなcontactサービスなどは非常にソーシャルな機能である

Community i-nameを使えばさらにlow levelなi-nameを他者に提供出来る

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 ライブラリは無さそう

XRI の欠点

基本的に有償

その性質上止むを得ないとしても Web の世界では余り受け入れられそうにない

一応無償のもある

freexri.com

xrid.net

最終的には xri.net で提供している XRI Proxy Resolver に問い合わせなければならない (DNS のような仕組みでは無さそう )

シングルポイントじゃないか?

仕様が余りに複雑すぎる

XRI Relative Reference の解決

Local XRI Resolver

現状 XRI の仕様をまともに impl してる RP ライブラリは無さそう

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

参考となる 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

Thanks ご清聴ありがとうございました

Thanks

ご清聴ありがとうございました

Add a comment

Related pages

Yadis - Wikipedia, the free encyclopedia

Yadis is a communications protocol for discovery of services such as OpenID, OAuth, and XDI connected to a Yadis ID. While intended to discover digital ...
Read more

Python OpenID – Freecode

Python OpenID. Python OpenID is a ... Release Notes: This release adds support for Yadis, XRI, and the Simple Registration Extension for OpenID 1.1. Links ...
Read more

OpenID identity discovery with XRI and XRDS

OpenID identity discovery with ... The work examines the identity discovery problems that needed to be ... YADIS/XRI Identifier Resolution with ...
Read more

OpenID identity discovery with XRI and XRDS | William Tan ...

OpenID Identity Discovery with XRI and XRDS Drummond Reed Cordance Corp. 3020 Issaquah-Pinelake RDF #74 Sammamish WA 98075 +1.206.618.8530 Les Chasen ...
Read more

PHP7 Support · Issue #129 · openid/php-openid · GitHub

PHP7 Support #129. Open ... File: php-openid/Tests/Auth/Yadis/XRI.php. Line 134: PHP 4 constructors are now deprecated function Tests_Auth_Yadis_XRI() {}
Read more

Wikipedia:The Wikipedia Library/Tech - Wikipedia, the free ...

Wikipedia:The Wikipedia Library/Tech The Wikipedia Library; Rationale; Project plan; Partners ... OpenID. A functionally similar approach to SAML is OpenID.
Read more

Arch Linux - python2-openid 2.2.5-4 (any) - File List

usr/lib/python2.7/site-packages/openid/ usr/lib/python2.7/site-packages/openid/__init__.py; usr/lib/python2.7/site-packages/openid/__init__.pyc;
Read more

OpenID Directed Identity/Identifier Selection in PHP ...

OpenID Directed Identity/Identifier Selection ... I'm trying to implement an OpenID server in PHP ... Have a look at the YadisXRIRes and YadisXRI ...
Read more

www.eugen-bender.de

Hier sollte eine Beschreibung angezeigt werden, diese Seite lässt dies jedoch nicht zu.
Read more