SxipがDreamforce (Salesforce.com の展示会)で、federated authentication のデモをした(記事参照)。これは、どこか別のところで認証(Authentication)を受けて、その情報を使ってサービス提供を受ける(Authorize)というフレームワークで、国際標準としてはSAMLがあり、ベンダー技術として Sxip などがある。なお、その他のオープンソースの努力として OpenID (TypeKey後継), LID などがある。(なお、このような Federation 自体は別に珍しくない。たとえば昨年のXoops Conferenceなどでは、TypeKey と Xoops の連携のデモがされているし、2002年かな?のPlanetWorks ではXRIベースのものがデモされている。)

もうすこし詳しく解説すると、一般的なASPベンダーはサービスを提供するのであって、認証を提供するのではない。認証(Authentication)は、各Identity Holderがやればよい。そして、Assertion をもってサービスを受けに行くわけだ。その Assertion に対してサービスを提供するかどうかは、Service Provider 側の決定。これが、Authorization である。問題は誰がそのAuthenticationを受けるIdentityを提供するかということだ。

Theirdentity, Ourdentity, Mydentity という言葉をご存知だろうか?3年前の Digital ID World での Doc Searls の講演で出てきた言葉だ。

Theridentity は、企業などが勝手に私たちに割り当てている ID。顧客データベースの中の顧客番号などがこれに当たる。ダイレクトマーケティングなどで使うのが目的であって、私の情報でありながら私は使うこともできない。

Ourdentity は、社員番号や銀行の口座番号など、われわれも恩恵を受けることができるID。ただし、提供者は会社であったり銀行であったりするので、管理権は我々には無く、あるとき勝手に一方的に削除されたりする。

これに対して Mydentity は、自分で管理する Identity である。たとえば自分でドメインを取って、メールアドレスを自分に発行したような場合、そのアドレスは Mydentity である。理想はこの mydentity を使って、サービス提供がされる各所で authorize をうけることができるようにすることだ。
世の中の流れは Mydentity に向かっているはずで、これこそが Identity 2.0 といってもよいだろう。

ところが、この管理をセキュアにやるのはは案外難しい。だから Web Hosting 見たいな感じで Identity Hosting という考え方が出てくる。Identity Hosting 業者は単に管理委託を受けているのであって、そのIdentity自体に権利を持っているわけではない。ただし、この場合、Identity Hosting をやる人・会社の信用度や、そこがつぶれたときの対策などが必要になる。XDIORGでやっているのは、そういうところである。統一の運用ルールを作って、必要ならばひとつのHosting業者(Identity Brokerと言っています)から他に移れるように、また、その業者が突然死しても大丈夫なようにエスクローをする、保険はこういうのに入らなきゃダメ、とか、契約・規約の整備などもろもろのことだ。こういったことがされていないと、広くそのIdentity framework を使うことはできないはずである。あまり安易に技術面だけで考えるべきではない。

なお、技術的にはSAMLだけでは不十分で、a priori に定まっていない circle of trust のメンバーを resolve し、その信用度(reputation)を測るフレームワークが必要だ。そのひとつとして、XRI/XDIがある。これは、delegation のフレームワークを内蔵したURNスキームで、Yadisの中核技術になっている。OASIS Open で標準化を進めており、SAMLのEvangelist の Peter Davis なども参画している。

さて、このSxipのブログ、SAMLでは重すぎてたとえばBlackberryからは使えないとSxipを売り込んでいる。本当にそうだろうか?単に現状のSAMLの実装が重いだけなのではないだろうか?

現在私のところでは、R&Dの一環でApacheモジュールとしての mod_saml みたいのも一応作っては見ている。これは、SAML Assertion Provider と SAML Assertion Consumer のパーツがあって、Consumer 側は Assertion を受け取ると、その情報を環境変数に入れてしまうので、Web Application 側はSAMLを意識せずに、あたかも Basic Authentication 見たいな感じで使うことができるというものだ。こういうものがあれば、とても便利にSAMLを使えるようになるのではないかと思うのだが、皆さんはどう思われるだろうか?