PHPでHTTP認証

Basic HTTP 認証の設定について

PHP

if (empty($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic'); header('HTTP/1.0 401 Unauthorized'); // キャンセル $view->display('cancel.tpl'); exit; } else { // ユーザ名とパスワードを設定 $user = 'xxxxxxxx'; $pw = 'xxxxxxxx'; // 入力時の処理 if ($_SERVER['PHP_AUTH_USER'] != $user || $_SERVER['PHP_AUTH_PW'] != $pw) { header('WWW-Authenticate: Basic'); header('HTTP/1.0 401 Unauthorized'); // 認証エラー $view->display('cancel.tpl'); exit; } }

$_SERVER['PHP_AUTH_USER'] が利用できない環境では、代わりに $_SERVER['HTTP_AUTHORIZATION']を使用。

PHP

if (empty($_SERVER['HTTP_AUTHORIZATION'])) { header('WWW-Authenticate: Basic'); header('HTTP/1.0 401 Unauthorized'); // キャンセル $view->display('cancel.tpl'); exit; } else { // ユーザ名とパスワードを設定 $user = 'xxxxxxxx'; $pw = 'xxxxxxxx'; list($auth_user, $auth_pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); // 入力時の処理 if ($auth_user != $user || $auth_pw != $pw) { header('WWW-Authenticate: Basic'); header('HTTP/1.0 401 Unauthorized'); // 認証エラー $view->display('cancel.tpl'); exit; } }

キャンセル/エラー時のテンプレートはBasic認証でのキャンセル時のHTMLを流用。

Smarty

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html> <head> <title>401 Authorization Required</title> </head> <body> <h1>Authorization Required</h1> <p>This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.</p> </body> </html>

サンプル

ユーザ名: 20iyMhAvcS5hA
パスワード: 200sHNu2ZYc3c
※一定時間毎に更新

HTTP認証

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。
主にLAPP環境でPHPを書いています。
最近はjQueryをよく書いています。