Ticket #1735 (assigned enhancement)

Opened 9 years ago

Last modified 9 years ago

OpenIDのクライアント(コンシューマ)になれるようにする

Reported by: kunitada Assigned to: yamaji (accepted)
Priority: critical Milestone:
Component: pne-masterslave Version:
Keywords: Cc:

Description (Last modified by kunitada)

■仕様

■方針

■開発内容

■関連情報

コミットは、 http://trac.openpne.jp/browser/OpenPNE/branches/prj/openid に行う

開発版最新TAGをsvn copyしたてください。

http://trac.openpne.jp/wiki/pne-openid-note

にも各種情報あり

http://groups.google.co.jp/group/openpne-dev/browse_thread/thread/fc67e0628d8c87a5 も参考に

Change History

01/07/08 14:32:51 changed by kunitada

  • description changed.

01/07/08 15:42:07 changed by yamaji

本家 認証サーバー http://www.openid.ne.jp/

OpenIDのPHPによる実装例 http://www.machu.jp/diary/20070609.html#p01

OpenIDのPHP用ライブラリ http://www.openidenabled.com/php-openid/

OpenID実用例 http://www.livejournal.com/

解説 http://www.pp.iij4u.or.jp/~kwi/openid/dsa-specs_ja.html

http://www.openidenabled.com/ からPHP-OpenID Libraryを使って自サバにサンプルコードを使ったOpenIDサーバを作るところまで完了。なぜかConsumerサイトでは使えず、http://www.openidenabled.comでのチェックがOK

ソースプログラムが見つからない http://trac.openpne.jp/wiki/pne-openid-note https://trac.pne.jp/search?q=OpenID&wiki=on&changeset=on&ticket=on

IDは,「ユーザー名+発行/認証サイトのドメイン名」という形になる。例えば,Openid.ne.jpに「nnw」というユーザー名で登録すると,「nnw.openid.ne.jp」がIDとして割り当てられる。

01/07/08 15:43:58 changed by yamaji

これらの資料を基に試作版を作成する。 認証サーバーをhttp://www.openid.ne.jp/として、認証クライアントをインターネット上に公開されているプログラムを参考にしながら作成する。

01/07/08 17:30:40 changed by tejima

アクセプトしてほしいなぁ。

01/07/08 18:05:26 changed by yamaji

  • status changed from new to assigned.

01/07/08 18:09:46 changed by yamaji

実験1

http://www.openid.ne.jp/[[BR]]

でアカウントを作成する。

http://www.livejournal.com/[[BR]]

でopenid.ne.jpで作成したアカウントでログインしてみる。

http://www.openidenabled.com/php-openid/より PHP 用の OpenID ライブラリを取得する。

PC上のcoLinux環境上に必要となるファイル(Auth Services)を展開する。

ライブラリに付属しているサンプルプログラム(クライアント側)を実行。

次のメッセージが出て失敗

Warning: Unknown(/var/www/openid/index.php): failed to open stream: Permission denied in Unknown on line 0

Warning: (null)() [function.include]: Failed opening '/var/www/openid/index.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0

取り合えず、パーミッションを最大限に緩めてみる

find openid -name "*" -exec /bin/chmod 777 {} \;

リトライすると簡単なログイン画面が表示される。

ここにあらかじめwww.openid.ne.jpで登録したIDプラスドメイン名を入力してみる。

またもやエラーである。

Fatal error: No XML parser was found in
/var/www/openid/Services/Yadis/XML.php on line 357

XML関連のphp用モジュールをapt-getする。

apt-get install php-xml-parser

apt-get install php-xml-serializer
apt-get install php-xml-util

リトライ、まだ同じエラーが出る。

01/08/08 12:32:44 changed by yamaji

coLinuxを再起動して成功に至る。
とりあえずopenIDライブラリ付属のコンシューマー(クライアント)は正常に動作することが確認できました。

01/08/08 15:43:02 changed by yamaji

●OpenID等の外部認証をOpenPNEで行う場合のシナリオ

 OpenIDの認証結果からメールアドレスが得られるため、現状のOpenPNEの認証に組み込むことが可能である。
 組み込みのためログイン画面の改造が必要となります。
 OpenID入力用テキストフィールドを一つ追加して、このIDに対応するパスワード入力欄は作らないとします。
 OpenIDのIDを入力して外部サーバーで認証を行います。
 認証の可否とユーザーのメールアドレスが折り返し得られます。
 もし、このメールアドレスがOpenPNEのユーザーとして登録してあれば認証成功とします。

 現状のOpenIDコンシューマー(クライアント)にOpenIDのID振り出し機能がないのでOpenIDサーバーへリンクして、IDの振り出しは全面的にOpenIDサーバーに任せるとします。ユーザー向けにOpenID取得の利点等の宣伝も必要である。(OpenIDを流行らせるため)
 OpenIDサーバーはコンシューマーからのリクエストに応じて2種類の動作をします。第一にIDがブラウザから使用される最初のものならば、WEBページにてパスワードをユーザーへ要求する。第二にIDが一度パスワードによる認証を経たものであれば、即、コンシューマーへ認証がすでに済んでいる旨を伝達し、メールアドレス等付随するデータも受け取れる。

01/08/08 15:51:21 changed by kunitada

SlavePNE機能でいけたらいきたい。検討ください。

http://d.hatena.ne.jp/openpne/20061228/1167289819

http://www.openpne.jp/archives/162/

01/08/08 16:16:02 changed by kunitada

  • description changed.

01/08/08 16:40:58 changed by kunitada

  • summary changed from OpenIDのクライアントになれるようにする to OpenIDのクライアント(コンシューマ)になれるようにする.

01/08/08 16:43:10 changed by kunitada

  • description changed.

01/08/08 16:49:00 changed by kunitada

  • priority changed from minor to critical.
  • component changed from pne-admin to pne-masterslave.