アルファサード株式会社 代表取締役 野田 純生のブログ


Basic認証設定を管理画面から行える Movable Type プラグインを作った。


公開日 : 2014-05-22 18:04:42


プラグイン設定画面

管理画面から設定できたらいいよねぇってことで作ってみた。プラグイン設定から、ユーザー名とパスワードの設定ができます。

.htaccessで設定とか、.htpasswdをターミナルで生成とかやっぱり敷居高いもんな、とか思ったんだけども、Perl CGIでは $ENV{ 'HTTP_AUTHORIZATION' } はどうもデフォルトでは取得できないみたいで。

.htaccess に追加

IIS や nginx では未確認。こんな指定するくらいなら素直にBasic認証の設定を入れるよって? そりゃそうだ。まぁ何かの参考に、備忘録として。

RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

関係(何とだ)しそうなところだけコードを貼っておく。

if ( my $auth = $app->get_header( 'AUTHORIZATION' ) ) {
    my @auths = split( /\s/, $auth );
    $auth = $auths[ 1 ];
    $auth = MIME::Base64::decode_base64( $auth );
    @auths = split( /:/, $auth );
    if ( scalar( @auths ) == 2 ) {
        my $username = $auths[ 0 ];
        my $password = $auths[ 1 ];
        if ( ( $username eq $auth_username ) &&
            ( $password eq $auth_password ) ) {
            $authrized = 1;
        }
    }
}
if (! $authrized ) {
    $app->logout();
    $app->delete_param( 'username' );
    $app->delete_param( 'password' );
    $app->user( undef );
    $app->response_code( '401' );
    $app->set_header( 'WWW-Authenticate', 'Basic realm="Please enter your ID and Password"' );
}

MT::Appの知られざる? メソッド

$app->response_code

レスポンスコードをセットする。

$app->set_header

カスタムHTTPレスポンスヘッダを追加指定する。

$app->delete_param

パラメタを削除する。



このブログを書いている人
野田純生の写真
野田 純生 (のだ すみお)

大阪府出身。ウェブアクセシビリティエバンジェリスト。 アルファサード株式会社の代表取締役社長であり、現役のプログラマ。経営理念は「テクノロジーによって顧客とパートナーに寄り添い、ウェブを良くする」。 プロフィール詳細へ