- 締切済み
.htaccess によるパスワード認証
[.htaccess]と、[.htpasswd]を使ってパスワード認証が必要なページを作成しました。 例) ・http:www.abc.com/cde/index.html [cde]ディレクトリの中に[.htaccess]と、[.htpasswd]が置いてあります。 もちろん、そのおかげで[http:www.abc.com/cde/index.html]にアクセスするとID・パスワード聞いてくるのですが、 [http:www.abc.com/cde/fgh/index.html]、cdeより下の階層のファイルにアクセスした場合もID・パスワードを聞かれてしまいます。 ただ、下の階層でID・パスワードを聞かれるのは構わないのですが、 一度、[http:www.abc.com/cde/index.html]でID・パスワードを入力したのだから、それより下の階層ではIDパスワードを聞かれないような仕組みにする方法はありますか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- anmochi
- ベストアンサー率65% (1332/2045)
> パスワード認証設定した同じ階層のファイルにアクセスした場合、 正確な根拠(RFCとか)は知らないんだけど、同じ階層なら一度認証するとフリーパスのはず。これはWebブラウザーがやってる事で、一度認証した後で同じ階層の別ファイルにアクセスする時、初回アクセス時に使った認証情報をWebブラウザーが覚えておいて毎回HTTPリクエストヘッダーに入れてる。この動きはWiresharkなどで見れば一目瞭然だ。 ところで、さっきの回答ではあえて言及しなかったんだけど、cde以下にBASIC認証がかかってて、/cde/index.htmlで認証OKになった後は/cde/fgh/hoge.gifも自動的に先ほど認証した情報でアクセスしにいくような気がするといえばする。つまり、BASIC認証がかかっている階層で一度認証してしまえば、後は同じ階層でも下の階層でも関係なくフリーパス。 > [http:www.abc.com/cde/fgh/index.html]、cdeより下の階層のファイルに > アクセスした場合もID・パスワードを聞かれてしまいます。 とか > 一度、[http:www.abc.com/cde/index.html]でID・パスワードを入力したのだから、 > それより下の階層ではIDパスワードを聞かれないような仕組みにする方法はありますか。 とかは書かれていて、 (1)一度[http:www.abc.com/cde/index.html]でID・パスワードを入力した後で それより下の階層にアクセスした時にも再び聞かれてしまうので困っている とは確かに書かれてはいないが、実際にこういう現象が起きたから質問したんだよね? > [http:www.abc.com/cde/fgh/index.html]、cdeより下の階層のファイルに > アクセスした場合もID・パスワードを聞かれてしまいます。 は > 一度、[http:www.abc.com/cde/index.html]でID・パスワードを入力したのだから、 とは全然リンクしていなくって、 (2)単独でhttp:www.abc.com/cde/index.htmlにアクセスした時にBASIC認証がかかるかどうか (3)単独でcdeより下の階層のファイルにアクセスした時にBASIC認証がかかるかどうか は試した結果BASIC認証はかかっていたよという事だけど (4)http:www.abc.com/cde/index.htmlにアクセスした時にBASIC認証がかかり、認証した。 その後、cdeより下の階層のファイルにアクセスした時にBASIC認証がかかるかどうか。 を試した結果はどうだったの?
- anmochi
- ベストアンサー率65% (1332/2045)
fghにも.htaccessファイルを作成します。 Apacheのバージョンが2.0系または2.2系なら Order Deny,Allow Allow from All Satisfy Any と書きます。Satisfyディレクティブは、上の行に書いているAllow from Allと、cdeの.htaccessから継承したRequire valid-userの「いずれかがOKならOKとする」という意味で、Allow from AllでOKとなるためにcdeにかかっているBASIC認証をスルーする事ができるようになります。 Apacheのバージョンが2.4系なら AuthType None と書きます。これは単純にこのディレクトリを認証なしにする設定で、意味的にはこちらが本則であり上述のSatisfy Anyはバッドノウハウ的と言えるでしょう。2.4系ならこちらを使うべきです。 ただ、いずれの方法もfghは完全にBASIC認証をやらない事になるため、 > 一度、[http:www.abc.com/cde/index.html]でID・パスワードを入力したのだから、 > それより下の階層ではIDパスワードを聞かれないような仕組みにする方法はありますか。 が、cdeでBASIC認証をした上でfghに生アクセスさせる、という想定の場合には適用できないかも知れません。
補足
まだ試してないのですが、パスワード認証設定した同じ階層のファイルにアクセスした場合、 Aファイル、Bファイル、ファイルごとにパスワード認証聞かれますか?