忍者ブログ

Home > OpenID

OpenID Archive

[PR]

  • 2024-04-20 (Sat)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

  • Comments (Close):
  • TrackBack (Close):

XamppでPHP OpenID LibraryのOPのexample(Server)を動かしてみる

以下だらだら長文(しかも殴り書きなので文章めちゃくちゃ)書いてますが、
結局curlを有効にすれば普通にできます!

OP(Provider)編です。
RPがかなり簡単にできたので、特に調べずやってみます。

設定

http://localhost/openid/examples/server/server.phpにアクセスしてみると、

This server needs to be configured before it can be used. Edit config.php to reflect your server's setup, then load this page again.

おぉ、いきなりつまづいた…
しかもconfig.phpなんて見当たらないし。

とか思ってたら、setup.phpなんてのがあった。
http://localhost/openid/examples/server/setup.phpから設定できるらしい。
以下設定。

Server URL:http://localhost/openid/examples/server/server.php(デフォルト)

Include Path:空白(デフォルト)
ライブラリをPHPのincludeパスに含まれてないとこに置いてる時は必要っぽい。
とりあえず無視。DocumentRootに置くという本番ならありえない構成になってるのでまぁ大丈夫でしょう。

Store method:DB作るの面倒いので、Filesystemで。
Filesystem Pathは、/xampp/htdocs/openid/examples/server/にでもしておく。(セキュリティ0ですね^^)

できたソースがこちら↓

<?php
/**
 * The URL for the server.
 *
 * This is the location of server.php. For example:
 *
 * $server_url = 'http://example.com/~user/server.php';
 *
 * This must be a full URL.
 */
$server_url = "http://localhost/openid/examples/server/server.php";

/**
 * Initialize an OpenID store
 *
 * @return object $store an instance of OpenID store (see the
 * documentation for how to create one)
 */
function getOpenIDStore()
{
    require_once "Auth/OpenID/FileStore.php";
    return new Auth_OpenID_FileStore("/xampp/htdocs/openid/examples/server/");
}

?>

これをC:\xampp\htdocs\openid\examples\server\config.phpとして保存する。
(ここまでやるならファイル作成までやってくれたらいいのに。。。)

これで設定は完了の模様。

OpenID発行&認証

では、改めて…index.phpは説明だけっぽかったので、
http://localhost/openid/examples/server/server.php/loginにアクセス!

ユーザ名を入力してログインすれば、OpenIDが発行される。
(※ exampleなのでその辺りは緩く作ってあり、実際は発行作業をしなくても認証は可能)

Identifierはhttp://localhost/openid/examples/server/server.php/idpage?user=tnantoka。

ログイン!


成功!!


Identifierのページ


では、早速使ってみる。
前回のConsumerを利用)

http://localhost/openid/examples/consumer/のIdentity URLに
http://localhost/openid/examples/server/server.phpを入力。

30秒ぐらい待たされたのちにエラー。

Authentication error; not a valid OpenID.

2.0だからProviderのURLだけ入れればいいはずだよなぁ?

http://localhost/openid/examples/server/server.php/idpage?user=tnantokaでもダメ。

あぁ、こりゃ何かおかしい。

ヘッダのX-XRDS-Locationを確認したり、
xrdsファイルの中身を見てみたりするも解決せず。

ということで一旦断念。

再チャレンジ

気を取り直して、(ブログでは1行ですが実際はかなり時間が経ってます^^)

ダメもとでもう一度ログインしてみるもやはりだめ。

エラーログを確認してもPHPのエラーは特に出ていない模様。
echoを埋め込みまくり、途中でオブジェクトが空になっちゃってるっぽいことは確認できるも、やはり原因は不明・・・。

なんとなくStore方式をMySQLに変えてみるも効果なし。
(そりゃそうか)

行き詰まりまくったところで、
やっぱエラー出ないのはおかしいんじゃないか、とxamppの設定を疑い始める。

xampp/apache/bin/php.iniを確認してみると…


log_error = Off ←!
!→ ;error_log = "C:\xampp\apache\logs\phperror.log"

な、なんとー!!
ということで、Onにしてコメントを外してみた。

…結局エラーは出なかったけどね。(画面に出すようにしてても出てないんだから当たり前)

この作業自体に意味はなかったものの、これをきっかけにphp.iniの他の設定も気にし出す。(かなり今さら)

案の定extension=php_curl.dllがコメントアウト。
外してApache再起動したら普通にできた。
※ curlが使えないっていうエラーは吐かないんですね・・・。

ぼ、僕の苦労はいったい。。。(動作環境すら見ずに進めたのが悪いんですが。)

ログイン!


ID入力。


成功!!


※ storeをfilesystemに戻したらできなくなったけど、
  serverディレクトリの名前を変えたり、
  xampp/tmp/_php_consumer_test以下を全部消したりしたら出来た。
  認証ミスった時のキャッシュでも残ってたのかな??

以上、無駄に苦労してしまいました。
設定ぐらいは確認してから始めましょうと言うことですね!

参考

PR

XamppにPHP OpenID Library入れてopenid.ne.jpのIDで認証する

ところまでやりました。

というわけで、唐突にOpenIDのお勉強をしています。
いろいろ用語がややこしくてイマイチ理解できてません。

とりあえず、いじってりゃそのうちわかるだろ、ってことで手を動かしてみます。

使ったのは、ご存知xampp(win)PHP OpenID Libraryです。

手順とか

DLからHello,OpenIDまでのメモ。

なお今回は、RPのみです。(OpenIDを利用する側)
OP(OpenID発行側)は次回の予定です。
※ 僕はConsumerとProviderっていう用語を主に使ってます。(わかりやすいので)

インストール

xampp(win)はインストール済みってことにします。
僕の使ったのは1.6.6aでした。
※ vistaを使っている人はProgram Filesにインストールしないように気をつけてください。(C直下とかにしましょう)
  設定ファイルとかがすぐ戻っちゃったりして面倒なので^^;(たしか)

次に(or 最初に)PHP OpenID Libraryからver2.0をダウンロードしてきて、xampp/htdocsにコピーします。
ディレクトリ名はopenidにでもしておきましょう。
(URL入れるたびにphp-openid-2.1.2とか打つのはしんどいので)

インストールは以上です。

OpenID取得

怪しいとか、怪しいとかいろいろ言われてますが、
所詮テストなのでOpenID.ne.jpで取りました。(捨てアカウントにはむしろちょうどいいでしょう)
メールアドレスだけでOKでした。

ユーザ名.openid.ne.jpがIdentifierです。

認証まで

http://localhost/openid/examples/consumer/にアクセスして、
Identifierを入力して、Verifyをクリックします。
(PAPEがどうのこうのは無視で。なんかOP側のセキュリティ対策がちゃんとしてることを要求する時に使うみたいです ※)
OpenIDに欠けている「評判情報」 - @IT

はい、無事ログインできましたね。
・・・で終わればよかったんだけど、そうはいきませんでした。

Warning: mkdir() [function.mkdir]: No such file or directory in C:\xampp\htdocs\openid\examples\consumer\common.php on line 57 Could not create the FileStore directory '/tmp/_php_consumer_test'. Please check the effective permissions.

なんていうエラーが。

全然OpenIDとは関係ない記事ですが、XAMPPにSmartyをインストールして、HelloWorldを出力させるまで(PHP) | Web&MUSICブログ QUALLを参考に、
C:\xampp\htdocs\openid\examples\consumer\common.phpの53行目あたりを、

//    $store_path = "/tmp/_php_consumer_test";
    $store_path = "/xampp/tmp/_php_consumer_test";

に直しました。
xamppって絶対パスに弱いんですよね^^
(windows上だからしかたないと思うけど)

よし、これでOKと思いきや、次は、

Fatal error: Define Auth_OpenID_RAND_SOURCE as null to continue with an insecure random number generator. in C:\xampp\htdocs\openid\Auth\OpenID\CryptUtil.php on line 53

とか言われてる…。
これはずばり解決策がすぐ見つかった(PHP OpenID Library を使ってみた - F.Ko-Jiの「一秒後は未来」)ので、
C:\xampp\htdocs\openid\Auth\OpenID\CryptUtil.phpの23行目付近を、

//    define('Auth_OpenID_RAND_SOURCE', '/dev/urandom');
    define('Auth_OpenID_RAND_SOURCE', NULL);

にすれば、OK。

わりとつまづきましたが、これでOpenIDで認証できるようになりました。
結果↓

openidでログイン!


認証を許可。


成功!!

以上、ただexampleを動かしただけでした。
いろいろ酷評されがちのPHPですが、新しいことをサクッと試してみたい時にはかなり便利ですよねー。
(詳しく知らなくてもとりあえず動くので^^)

OP(Provider)編もこうご期待!?

Home > OpenID

Search
Loading
Feeds
Links
スポンサードリンク

Page Top