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変数が使えないのでした。