PHPでDigest(ダイジェスト)認証
2007.03.30 Author: えす
PHPでBasic認証を行うことができますが
PHP 5.1.0 以降であれば、PHPでDigest認証を行うことができます。
ソースはこんな感じです。
<?php
define(USER_ID, "admin"); $realm = 'shain';
$data = array(
foreach ($response as $v) {
echo "ログインしました。"; ?> |
以下、簡単な説明です。
$_SERVER['PHP_AUTH_DIGEST']はDigest認証を行った場合、クライアントから送信された「Authorization」の内容が入ります。
でAuthorizationの内容を、各項目ごとに分割します。
ちなみに各項目の簡単な説明です。
realm | 認証名 |
username | 入力したユーザ名 |
uri | 現ページのURI |
nonce | サーバ側で生成した乱数 |
cnonce | クライアント側で生成した乱数 |
qop | 保護レベル |
algorithm | 暗号方式 |
nc | クライアントからのリクエスト回数(16進数) |
response | ブラウザ側で生成したハッシュ値 |
でハッシュを生成します。
ハッシュの生成方法は下記の通りです。
1. | ユーザ名:realm:パスワード」をmd5でハッシュ値生成 |
2. | 「リクエストのメソッド名:URI」をmd5でハッシュ値生成 |
3. | 「1のハッシュ:nonce:nc:cnonce:qop:2のハッシュ」をハッシュ値生成 |
はブラウザから送られてきた「response」(ブラウザ側で同じ手順で生成したハッシュ値)と比較し、一致すれば通します。
名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ