福岡のIT系の会社で働くエンジニアのブログです。

技術雑記

[CakePHP] CakePHP(PHP)でのBasic認証はPHPがCGI版で動いている場合は使えないようです

Twitter bookmark Facebook LINE Pocket Feedly RSS

とあるサイトでCakePHPのBasic認証が必要な機会があったので、導入してみました。
Securityコンポーネント使用したり、独自のコンポーネントで出来そうな様子。

CakePHPでBasic認証対応ページを作る - blog.katsuma.tv
http://blog.katsuma.tv/2008/07/cakephp_basic_auth.html

CakePHP 管理者サイトでBasic認証を簡単に行うコンポーネント | Shin x blog
http://www.1x1.jp/blog/2008/01/cakephp_adminauthcomponent.html

どちらもよく出来ていて、開発環境ではバッチリ動作していたのですが、どうもレンタルサーバにアップした途端、動作しない。
調べていくとBASIC認証のダイアログは表示されるものの、認証されない。
というか、入力した値がプログラム中で取得出来ていない。



詳しく調べると、
phpでベーシック認証 - bnote
http://www.bnote.net/php/php/22_basic_auth.shtml
PHPによるHTTP認証のフック
この機能は、Apacheモジュールとして実行した時のみ 有効で、CGI版では利用できません。
仕組みとしては、Apache等がクライアントとのやり取りを行うのと同様のことを php で実現することになります。


ということで、PHPでBASIC認証というのは、PHPがCGI版で動いている場合は使えない手法のようでした。
まさにレンタルサーバのPHPがCGI版のようでした。

PHPに慣れている人には当たり前のことなのかもしれませんが、自分は知りませんでした。

てことは必然的にPHPがCGI版で動いている場合はCakePHPでBasic認証対応ページを作る為には、Apacheの設定でなんとかしないといけないようでした。

幸い今回の場合は.htaccessのBasic認証 + 修正パッチで対応できるようなのでそちらで対応しました。

CakePHP URLマッピング修正パッチ | Shin x blog
http://www.1x1.jp/blog/2006/09/cakephp_url_mapping.html


ネットを検索した結果、こういった情報がどこにもないように思えたので、メモしています。
CakePHPのBasic認証ではまったことのある人、これからCakePHPでBasic認証する機会のある方、参考にして下さい。


※上記以外でその他に参考にしたサイト

CakePHP で ついに見つけた!CakePHP の管理者画面作成ノウハウ(ラボブログ)
http://blog.spicebox.jp/labs/2009/05/post_282.html

CakePHP 1.2 の Basic 認証設定があまりにも簡単すぎる(ラボブログ)
http://blog.spicebox.jp/labs/2009/03/cakephp_12_basic.html

cakePHP1.2でBasic認証|TONTTU.NET 群馬県 太田市
http://www.tonttu.net/tec/cakePHP/cakePHP12_2_BASIC.html

[CakePHP] 管理者画面でIP制限をかけてみる - ElectricBrain Standard
http://www.multiburst.net/ElectricBrain/2009/05/ip-limitation-on-the-admin-routing

Twitter bookmark Facebook LINE Pocket Feedly RSS