ホーム > フォーラム > 開発 > モジュール開発 > OpenIDモジュール

OpenIDモジュール
投稿者: sakimura | 投稿日時: 2007/3/25 22:51 | 閲覧: 70105回
sakimura
お久しぶりです。

さてさて、OpenIDのPHP用ライブラリが出てからしばらくたつようですが、どなたか組み込まれた方いらっしゃいますか?もし、そういうプロジェクトが立っていないのならば、あんまり時間は無いながらもぼちぼちやってみようかと思うのですが...。

#ちなみに、Interop で話す機会があるので、そのときにでもお披露目できると
#楽しいかなぁと...。

コメント(32)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: OpenIDモジュール 
投稿者: minahito | 投稿日時: 2007/3/27 12:33
minahito
sakimuraさん、お久しぶりです (^^)/

引用:
sakimuraさんは書きました:
さてさて、OpenIDのPHP用ライブラリが出てからしばらくたつようですが、どなたか組み込まれた方いらっしゃいますか?もし、そういうプロジェクトが立っていないのならば、あんまり時間は無いながらもぼちぼちやってみようかと思うのですが...。


自分が聞いた限りでは、まだトライしている方はいらっしゃらないと思います。xoops.org のほうはわかりませんが...

これは「欲しい!」という方はかなり多いのではないでしょうか!
Re: OpenIDモジュール 
投稿者: tadashi | 投稿日時: 2007/4/9 11:41
tadashi
OSSによって構築可能な認証基盤構成技術の現状と事例調査
というのがあります。
20日までです。
http://www.ipa.go.jp/software/open/ossc/2007/theme/koubo1_t02_1.html
こういった調査をしつつ、XOOPS のモジュールとして実装テストもするというのはどうでしょうか?
Re: OpenIDモジュール 
投稿者: onokazu | 投稿日時: 2007/4/12 11:41
onokazu
ちらっとみただけで詳しくは知りませんでしたが、原理的にはflickrやtypekey認証と同じですね。自フレームワークに追加しようと思います。公開は、、もう少し先になりそうです。
Re: OpenIDモジュール 
投稿者: sakimura | 投稿日時: 2007/5/8 12:11
sakimura
あるプロジェクトにどっぷりで、やっと浮上して参りました。

あとちょっといじると、Consumer としての OpenID モジュールは出来そうです。
Re: OpenIDモジュール 
投稿者: halt | 投稿日時: 2007/5/9 17:00
halt
今更レスするのも微妙ですが…

引用:

onokazuさんは書きました:
ちらっとみただけで詳しくは知りませんでしたが、原理的にはflickrやtypekey認証と同じですね。自フレームワークに追加しようと思います。公開は、、もう少し先になりそうです。


flickrやtypekeyとは違いますよー。
OpenIDはflickrやtypekeyの代替にはなりません。
技術面でいうとOpenIDのほうがずっと複雑です。
(delegateとか)

以下はアンチOpenID派というバイアスのかかった人間の発言なので
あんまり鵜呑みにしないで聞いてほしいのですが
OpenIDは(制限しないかぎり)どこの認証局でも使えます。
OpenID派はこれが素晴らしい事だといっているようですが、
実際の所、どこの認証局でも許可してしまうと
http://www.jkg.in/openid/
みたいなのもあるのでアカウントとしての信頼性がほとんどない
という状況になってしまいます。
(メールアドレスさえ必要ないっていう意味で。)

でも(利用の範囲にもよりますが)
Xoops程度なら問題ないかもしれませんね。
Re: OpenIDモジュール 
投稿者: onokazu | 投稿日時: 2007/5/9 23:56
onokazu
引用:

haltさんは書きました:
今更レスするのも微妙ですが…

引用:

onokazuさんは書きました:
ちらっとみただけで詳しくは知りませんでしたが、原理的にはflickrやtypekey認証と同じですね。自フレームワークに追加しようと思います。公開は、、もう少し先になりそうです。


flickrやtypekeyとは違いますよー。
OpenIDはflickrやtypekeyの代替にはなりません。
技術面でいうとOpenIDのほうがずっと複雑です。
(delegateとか)



すいません、書き方が少しよくなかったかもしれません。
実際のところ、OpenIDがどのように認証を行なうかの詳細に関しては
ほとんど分かっていません。また、先の投稿での原理というのは
OpenIDが実際に認証する仕方についての原理ではなく、クライアント
側の実装の方法に関する原理という意味で書きました。

あくまでもphp open IDライブラリを使用してクライアント側を
実装するサンプルをみた限りですが、リクエスト値を見てサーバへ
とリダイレクトが必要か、サーバのリスポンスであるかを判断し、
その判断結果に応じて何らかのアクションを実行するという方式に
おいてはTypeKey認証のクライアント側実装と同等かなという意味で書きました。
確かにOpenIDのサーバ側の認証の原理はかなり複雑そうですが、クライアント側である
自分の共通認証ライブラリではBasic認証や、外部XOOPSを利用しての認証等が
あるのですが、それらを実装する場合の原理とOpenIDやTypekey認証の実装の
方法に関しては明らかに毛色が違うので、、自分の中ではそのように認識
しています。

引用:

以下はアンチOpenID派というバイアスのかかった人間の発言なので
あんまり鵜呑みにしないで聞いてほしいのですが
OpenIDは(制限しないかぎり)どこの認証局でも使えます。
OpenID派はこれが素晴らしい事だといっているようですが、
実際の所、どこの認証局でも許可してしまうと
http://www.jkg.in/openid/
みたいなのもあるのでアカウントとしての信頼性がほとんどない
という状況になってしまいます。
(メールアドレスさえ必要ないっていう意味で。)


なるほど、大変参考になりました。とりあえず自身の共通ライブラリ
の中には含めてみようと思います。実際にそれを利用するかどうかは
アプリ開発者や、サイト管理者に任せるということで。。;-p
Re: OpenIDモジュール 
投稿者: yosha_01 | 投稿日時: 2007/5/11 0:59
yosha_01
なんだか楽しそうな話題ですね。

識別/認証 ( Identification & Authentification ) の問題と、許可 ( Authorization ) の問題は、適度に切り離して考えてあげると具合がよさそうな気がします。

ドメインAに属する yosha_01ドメインBに属する yosha_01 は "同一のユーザー" である。」

と言うことがお手軽に証明できるなら、

ドメインBに属する yosha_01 の "お友達リスト" に登録されているところの ドメインCに属する twodash に対して、ドメインCのメモ への閲覧権限を付与する(ややこしいなぁ)。」

といった 「ドメインをまたいだソーシャル・ネットワーク」 のようなことも、実現まであと一歩、といったところではないでしょうか。

"Open" かつ、とんでもなく "Scalable" なコミュニティが出来ちゃいそうな予感がプンプンします。

# たのしみにしてます
Re: OpenIDモジュール 
投稿者: sakimura | 投稿日時: 2007/5/14 13:21
sakimura
引用:

haltさんは書きました:
以下はアンチOpenID派というバイアスのかかった人間の発言なので
あんまり鵜呑みにしないで聞いてほしいのですが
OpenIDは(制限しないかぎり)どこの認証局でも使えます。
OpenID派はこれが素晴らしい事だといっているようですが、
実際の所、どこの認証局でも許可してしまうと
http://www.jkg.in/openid/
みたいなのもあるのでアカウントとしての信頼性がほとんどない
という状況になってしまいます。
(メールアドレスさえ必要ないっていう意味で。)

でも(利用の範囲にもよりますが)
Xoops程度なら問題ないかもしれませんね。


実際、そうですね。OpenIDの認証は、ただ単にそのURLの持ち主であると言うことを示しているに過ぎませんから、その上に Reputation Service とかが乗ってくる必要があります。OpenIDのURLがブログである場合は、そのブログの内容を自動カテゴライズして、それが自分が欲するカテゴリーに属していれば認可するなんて言うのも有りかと。

Xoopsの場合は、どこか一カ所に登録したら、他に明示的に登録する必要は無いというようなことがあり得ますね。

認証Tokenの価値と言うことに関しては、その認証を得るのに使ったデバイス(username/password だけか、ハードウェアトークンを使ったか、Biometricsであるか)などの情報も重要ですね。
Re: OpenIDモジュール 
投稿者: sakimura | 投稿日時: 2007/5/14 13:22
sakimura
引用:

onokazuさんは書きました:

なるほど、大変参考になりました。とりあえず自身の共通ライブラリ
の中には含めてみようと思います。実際にそれを利用するかどうかは
アプリ開発者や、サイト管理者に任せるということで。。;-p


ご自身の共通ライブラリとは、何でしょうか?
Re: OpenIDモジュール 
投稿者: sakimura | 投稿日時: 2007/5/14 13:26
sakimura
引用:

yosha_01さんは書きました:
なんだか楽しそうな話題ですね。

識別/認証 ( Identification & Authentification ) の問題と、許可 ( Authorization ) の問題は、適度に切り離して考えてあげると具合がよさそうな気がします。

ドメインAに属する yosha_01ドメインBに属する yosha_01 は "同一のユーザー" である。」

と言うことがお手軽に証明できるなら、

ドメインBに属する yosha_01 の "お友達リスト" に登録されているところの ドメインCに属する twodash に対して、ドメインCのメモ への閲覧権限を付与する(ややこしいなぁ)。」

といった 「ドメインをまたいだソーシャル・ネットワーク」 のようなことも、実現まであと一歩、といったところではないでしょうか。

"Open" かつ、とんでもなく "Scalable" なコミュニティが出来ちゃいそうな予感がプンプンします。

# たのしみにしてます


そうですね。

実際、SNSなんて、SSO+Blog+認証RSS/Atom+FOAFで大体用が足りるのではないかと思っています。そうしたら、中央集権的なSNSはいらなくなりますね。
Re: OpenIDモジュール 
投稿者: onokazu | 投稿日時: 2007/5/14 18:13
onokazu
引用:

sakimuraさんは書きました:
引用:

onokazuさんは書きました:

なるほど、大変参考になりました。とりあえず自身の共通ライブラリ
の中には含めてみようと思います。実際にそれを利用するかどうかは
アプリ開発者や、サイト管理者に任せるということで。。;-p


ご自身の共通ライブラリとは、何でしょうか?


自フレームワークの各種パッケージの内の一つなのですが、もったいぶるほどのものでもないので、今日・明日にでも該当パッケージのみダウンロード可能にしてみようと思います。まだ開発段階なのと、特にXOOPSとの連携を考えているわけではないですが、、
Re: OpenIDモジュール 
投稿者: sakimura | 投稿日時: 2007/5/16 16:39
sakimura
OpenIDが、単にそれだけでは何も照明していないと言うことについての追記です。

コンベンションベースであって、規格ではありませんが、Sun のアプローチは参考になりますね。Sun は全社員にOpenIDの配布をするようです。これは、Sunの社員に限ります。したがって、sun.com からの OpenID Assertion は、その持ち主が Sun の社員であるという属性認証に成っているわけです。もちろん、RP側は、その先が本当にSunであるかなどは、X.509で確認するなどが必要なわけですが。

もう一つは、XRDSと組みあわせるというものがありますね。こうすると、もう少し構造的になります。OpenID 2.0 に成ってしまいますが...。

いずれの場合にも、RPがそのClaimを信じるかどうかはRP次第です。あらかじめ、Sun.comは信じるとか、あるいは、どこかの Reputation Service でスコアが80点以上のものは信じるとか、そういうことが必要ですよね。

ちなみに、今、Mountain View でやっている Internet Identiti Workshop に来ています。この辺の大立て者は大体集まっています。

http://technorati.com/tag/iiw2007 で、割と感じがつかめるのではないかと思います。

Re: OpenIDモジュール 
投稿者: sakimura | 投稿日時: 2007/5/16 16:42
sakimura
引用:

onokazuさんは書きました:

自フレームワークの各種パッケージの内の一つなのですが、もったいぶるほどのものでもないので、今日・明日にでも該当パッケージのみダウンロード可能にしてみようと思います。まだ開発段階なのと、特にXOOPSとの連携を考えているわけではないですが、、


ぜひぜひ。

こちらは、JanRain のライブラリを使って、Xoops のモジュールを書いてみたところです...何か不安定...。
Re: OpenIDモジュール 
投稿者: onokazu | 投稿日時: 2007/5/20 11:53
onokazu
引用:

sakimuraさんは書きました:
こちらは、JanRain のライブラリを使って、Xoops のモジュールを書いてみたところです...何か不安定...。


こちらもJan Rainのライブラリを使用しています。全てを自分で作る力も余裕もないので。。HatenaやTypekeyもそれぞれAuth_HatenaやAuth_Typekeyを使用しています。

それでちょっと必要なファイルをまとめてパッケージ化してみましたが、大それたものではなく、単にPEARのAuth、Hatena(Auth_Hatena)、Typekey(Auth_Typekey)や、Flickr(phpflickr)、OpenID(Jan Rain)、BasicHTTP
、外部XOOPS(PEAR Auth利用)等の認証を同一インターフェースで利用可能にしたものです。今後、livedoor認証も追加する予定です。ダウンロードはこちらです。動作サンプルもこちらにありますが、dom関連のphp extensionがないのでOpenIDは動作しません。

ライブラリの使用方法は下記の様な感じになります。下記は完全なコードではありませんので、使用例の詳細はlogin.phpを
見ていただければと思います。秘密鍵等の各種認証の設定情報はconfig.phpに書き込みます。

Basic HTTPの場合
$auth =& new Sabai_User_Authenticator_BasicHTTP($username, $password);


Flickrの場合
$auth =& new Sabai_User_Authenticator_Flickr($apiKey, $apiSecret);


Hatenaの場合
$auth =& new Sabai_User_Authenticator_Hatena($apiKey, $apiSecret, $jsonLib);


Typekeyの場合
$auth =& new Sabai_User_Authenticator_Typekey($apiToken);


Yahooの場合
$auth =& new Sabai_User_Authenticator_Yahoo($apiKey, $apiSecret);


Open IDの場合
$auth =& new Sabai_User_Authenticator_OpenID($storePath);


外部XOOPSの場合
$auth =& new Sabai_User_Authenticator_XOOPS($dbUser, $dbPass, $dbName, $dbPrefix, $dbHost, $dbScheme);


実際の認証はauthenticate()をコールして実行します

 if ($user =& $auth->authenticate(new Sabai_Request_Web())) {
     printf('%sさん、こんにちは', h($user->getName()));
 } else {
   //認証失敗
 }
Re: OpenIDモジュール 
投稿者: onokazu | 投稿日時: 2007/5/20 14:39
onokazu
ダウンロードしている人はいないかもしれませんが、OpenIDの認証クラスでちょっと不具合があったのでダウンロードのパッケージを差し替えました。
Re: OpenIDモジュール 
投稿者: sakimura | 投稿日時: 2007/5/21 2:30
sakimura
不安定なのは、どうやら session まわりの引き継ぎがうまくゆかないことがあるからの様です。Xoops の設定で、セッションをカスタマイズするところがありますよね。あそこで、カスタマイズするを選ばなければ大丈夫。

カスタマイズすることにすると、セッションをうまく引き継げなくなるみたい...。
Re: OpenIDモジュール 
投稿者: halt | 投稿日時: 2007/5/22 18:59
halt
引用:

認証を同一インターフェースで利用可能にしたものです。


すごいですね。
全部一箇所から扱えると楽でいいなとおもって
自分も実装していた所でした。
私ももうちょっと手を入れて公開してみます。
Re: OpenIDモジュール 
投稿者: onokazu | 投稿日時: 2007/5/22 21:48
onokazu
引用:

haltさんは書きました:
全部一箇所から扱えると楽でいいなとおもって
自分も実装していた所でした。
私ももうちょっと手を入れて公開してみます。


ぜひ、お願いします。期待しています。

今のところ、XOOPSのユーザ情報との同期とかには自分自身は興味ないのですが、各種認証ライブラリを一箇所から使えるようなものがあると、「はてな認証モジュール」「OpenIDモジュール」等の区別なく一つのモジュールで各種認証を扱えますし。。だれか興味ある人いないですかね。
Re: OpenIDモジュール 
投稿者: kisara_icy | 投稿日時: 2007/5/22 23:17
kisara_icy
ども、きさらです。

はてな認証モジュール作ってます

各種認証モジュールを作る場合、ある程度内部は同じようなものになると思いますので、統合するのも可能かもしれませんね。

今ははてなで公開されているライブラリを改良したものを使っていて onokazu さんのライブラリはまだ使ってませんが、ちょっと試しに組み込んで複数認証をやってみますか。

はてな認証モジュールは近々正式リリースできると思いますので、余裕があればその次あたり。
はてな認証モジュールをベースにすれば簡単かな?
Re: OpenIDモジュール 
投稿者: onokazu | 投稿日時: 2007/5/23 19:13
onokazu
引用:

kisara_icyさんは書きました:

各種認証モジュールを作る場合、ある程度内部は同じようなものになると思いますので、統合するのも可能かもしれませんね。

今ははてなで公開されているライブラリを改良したものを使っていて onokazu さんのライブラリはまだ使ってませんが、ちょっと試しに組み込んで複数認証をやってみますか。


あまりテストしていないのですが(^^;)、はてな認証の場合だと、サーバへのリダイレクトが必要なのか、
サーバからのリダイレクトなのかを判断する部分がauthenticate()のコールだけで済むので、結構
きれいにまとめることが出来るのではないかと思います。

また、ユーザ情報の同期に関してですが、昔、osCommerceとXoopsとのユーザ情報の同期の様なものがありました
(今回のとはちょっと違いますが)が、色々と面倒ですね。
コア側に、ユーザ情報に変更があったり、削除があった場合にアクションを実行するフックを
引っ掛けることが出来るポイントがあったりすれば良いのですが。。または、データベースのトリガー等を利用するのも手かもしれませんが、
MySQLだと5.1以降が必須となってしまいますね。

投票(0)

新しいものから | 古いものから | RSS feed
 
To Top