Google App Engine for PHP環境でBasic認証をかける
Google App Engine for PHP環境で作りかけのプログラムにサクッとBasic認証をかけようと思ったら予想外にハマったので覚書。
まずはGAE環境側でサポートされてないかなぁと思ったのですがその機能は無し。
じゃあPHPのコードで実装するか、と
他を参考に組み込んでみたのですが、認証ダイアログは表示されるものの何度ID/Passを入力しても一向に認証が通る気配無し。
散々調べたあげくピンポイントでの答えは、間もなく廃止されるGoogle CodeでのこのIssue中にありました。
そのIssueには具体的なコードは出てきませんが、早い話がGAE for PHP環境では
<?php if (!isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['HTTP_AUTHORIZATION'])) { $arr = explode(" ", $_SERVER['HTTP_AUTHORIZATION']); $arr = explode(":", base64_decode($arr[1])); $_SERVER['PHP_AUTH_USER'] = $arr[0]; $_SERVER['PHP_AUTH_PW'] = $arr[1]; }
というコードを最初に実行しておかないと、通常のPHP環境では使えるPHP_AUTH_USER/PW変数が使えないのでした。