- PR -

PHP使用時におけるhttp認証について

1
投稿者投稿内容
ごんた
会議室デビュー日: 2004/09/17
投稿数: 6
お住まい・勤務地: あそこ
投稿日時: 2005-09-27 23:48
セキュリティ関連のことに疎いため、とんちんかんな質問かもしれませんが教えて下さい。

Windows2003上でIISを使用してWebアプリケーションを動かしておりますが、PHPをインストールし、ISAPIフィルタでphp5isapi.dllによる認証を行うように設定すると、Webアプリケーションが動作しなくなる現象がおきてます。

Webアプリの開発元に問い合わせても、現象が出ない(ただしWindows2000)こと、このこと自体はパッケージソフトの仕様?なのでどうしようもないかと思い、この認証を行わないようにすると、IISからPHPドキュメントは認識できるようなのですが、認証を求める画面が出てきてしまいます。

WebサーバーはIIS必須なので、この指定ができないとなれば、変な話、認証を行わなくすればよいのでしょうか?(現在のところ、サーバー自体も外部に晒していないので、極端に言えば認証不要のため)

よい知恵というか、常識的な知識でもよいですから教えて頂けないでしょうか?
ごんた
会議室デビュー日: 2004/09/17
投稿数: 6
お住まい・勤務地: あそこ
投稿日時: 2005-09-30 19:05
少し方向を変えて幾つか試みてみました。

認証の方法をISAPIフィルタを使うのではなく、IISPASWORDというフリーソフトを使うことにしました。これはAppacheと同じように.htaccessを使って認証の制御ができるそうです。しかし、結果は同じでした。

次に、PHPのインストール方法を変え、CGI バイナリを使う方法にしてみました。
この方法でも同じ結果となりました。
認証を求めるダイヤログが出てきて、「このページを表示する権限がありません」というIISのエラーが出ます。

判らないままさらに調べているうちに、IIS側の問題というよりもWindows2003のNTFSのアクセス権の問題なのかと思い、匿名ユーザーのアクセス権が無い?ということで、
PHPのフォルダに対してeveryoneの実行権、さらにドキュメントの置場に対しても、同じ権限を与えてみました。
さらに結果は同じです。

さらに、匿名ユーザーIUSR_XXXXのパスワードが判らなかったので、アカウント自体のパスワードを設定し直し、ディレクトリ自体の匿名ユーザー可能であることを確認したうえで、そのパスワードも合せて設定し直してみました。
さらには結果が同じなので、今度は、出てきたダイヤログに、匿名ユーザーとそのパスワードを入れてみましたが、それでも駄目です。

私のつたない知識ではここで限界のようです。

Windows2000に入れた時はデフォルトの設定の通りで問題無かったのですが、やはり、入っているアプリの問題なのでしょうか?
加納正和
ぬし
会議室デビュー日: 2004/01/28
投稿数: 332
お住まい・勤務地: 首都圏
投稿日時: 2005-10-05 00:01
<引用>
Windows2000に入れた時はデフォルトの設定の通りで問題無かったのですが、やはり、入っているアプリの問題なのでしょうか?
</引用>

そのWebアプリとやらが何なのか分からないので、純然たる一般論です。

「Windows2003上でIIS」ということはIISそのもののアカウントが
何かが問題のような感じです。

プログラムにもアカウントがあるのですよ。ふつー。
おそらく、Windows2000とWindows2003ではそこらへんの
機構は違うはずなので、怪しいとは思います。

もちろん、わかりゃしませんが。

ごんた
会議室デビュー日: 2004/09/17
投稿数: 6
お住まい・勤務地: あそこ
投稿日時: 2005-10-05 20:12
加納正和さん。
アドバイス有難うございます。

確かにWebアプリ云々は雲をつかむような話ですね。

これはひとまず置いといて、Windows2003自体の問題として調べています。

Windows2000と2003では、アカウントの考え方がセキュリティ上、随分と厳しくなっているようですね。

http://www.atmarkit.co.jp/fwin2k/dnsvrguide/iis02/iis2.html
を見たのですが、特に変な状態にはなっていないようでしたが、
IISマネージャーの設定のところで、「Webサービスの拡張」で、PHPへの関連付けが
ISAPIを使用した設定のままになっていたので、CGIのパスに置き換えました。
しかし、これでも駄目でした。
HTTP 401.3 - リソース上の ACL によってアクセスを拒否されました。

それと、もっと見落としていることがありました。
PHPの入っているディレクトリに実行権限が与えられていなかったことです。
フォルダ自体に権限を与えていたので、安心していましたが、その中に入っているphp-cgi.exeというPHP本体のセキュリティを見ると、実行権限が無いのに気づき、
フォルダの内容を下層に継承する旨の指定をしたところ、これは付与できました。

この結果、今まではHTTPのエラー401.3が出ていたのが、
「CGI Error」
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
に替わりました。
少し前進したようですので、もう少しがんばってみます。
kangaroo
会議室デビュー日: 2005/10/14
投稿数: 1
投稿日時: 2005-10-14 02:55
> Windows2000と2003では、アカウントの考え方がセキュリティ上、随分と厳しくなっているようですね。

以前は インストーラ版を利用されたのではないですか?
それで今回は、zip版を使用したとか?
私も以前、zip版を使用して、IUSR_(コンピュータ名) に実行権限を付与してなくて苦しめられました。

何はともあれ、エラーメッセージを見る限り当初の問題は解決したようです。
今は次のステップで、コンテンツヘッダ が上手く渡されていないだけのようです。

原因を特定するために、

1.index.php ファイルに hoge とだけ記述したファイルでアクセスしてみて、PHP が正常に動作しているのを確認する。

2.問題のPHPスクリプトを示して質問をする

という手順で進むと、有効な回答が得られるかと思います。

[ メッセージ編集済み 編集者: kangaroo 編集日時 2005-10-14 02:57 ]
1

スキルアップ/キャリアアップ(JOB@IT)