Webページにアクセスする際に「ユーザー名」と「パスワード」の入力を求められる認証方式には、Basic認証のほかに、よりセキュリティを強化したDigest認証(ダイジェスト認証)という方式があります。
Digest認証では、パスワードそのものをネットワーク上に送信しないよう工夫された仕組みとなっており、Basic認証に比べて安全性が高いのが特徴です。
この記事では『Digest認証』について、以下の内容を図を用いてわかりやすく解説します。
- Digest認証とは?
- Digest認証の仕組み
- Digest認証のメリットとデメリット
Digest認証とは?
Digest認証は、HTTP通信における認証方式の一つで、Basic認証に比べてセキュリティを強化した仕組みです。
最大の特徴は、パスワードをそのまま送信せず、ハッシュ関数(MD5など)で暗号化した値を送信する点です。これにより、通信の盗聴によってパスワードそのものが漏れるリスクを軽減できます。
あわせて読みたい
『Basic認証』については下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。 続きを見るBasic認証とは?仕組み・使い方・注意点をわかりやすく解説!
Digest認証の仕組み
Digest認証の流れを以下に示します。


- クライアント(ブラウザなど)が、認証の必要なWebページにアクセスする。
- サーバーが、認証が必要であることを通知する(
401 Unauthorized
を返す)。- このとき「nonce(使い捨てトークン)」などの情報も送られます。
- ブラウザが、ユーザーに「ユーザー名」と「パスワード」の入力を求める。
- クライアントは、ユーザー名・パスワード・nonceなどを使ってハッシュ値を生成し、
Authorization
ヘッダーを付けて再リクエストをする。 - サーバーが受け取ったハッシュ値を検証し、正しければページを表示。間違っていれば拒否する。
WWW-Authenticateヘッダーの例
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm="MyRealm",
nonce="abc123",
opaque="xyz456",
qop="auth"
パラメータ | 必須? | 説明 |
---|---|---|
realm | ✅ 必須 | 認証領域の識別に使用されます |
nonce | ✅ 必須 | 一意のトークンで、リプレイ攻撃対策に使用されます |
algorithm | ❌ 任意 | 使用するハッシュアルゴリズム(省略時はMD5) |
qop | ❌ 任意 | 認証の品質を示す(例: auth ) |
opaque | ❌ 任意 | クライアントがそのまま返す固定値(セキュリティ強化補助) |
あわせて読みたい
『nonce(ノンス)』については下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。 続きを見るnonce(ノンス)とは?「読み方」や「リプレイ攻撃の防ぎ方」などを解説!
Authorizationヘッダーの例
Authorization: Digest username="user",
realm="MyRealm",
nonce="abc123",
uri="/secret.html",
response="a1b2c3...",
qop=auth,
nc=00000001,
cnonce="zzz999",
opaque="xyz456"
この中の response
フィールドが、ハッシュ関数(MD5など)で生成されたハッシュ値です。
フィールド | 必須 | 説明 |
---|---|---|
username | ✅ 必須 | ログインするユーザー名 |
realm | ✅ 必須 | サーバーから送られたrealm |
nonce | ✅ 必須 | サーバーから送られたnonce |
uri | ✅ 必須 | リクエストしているURI |
response | ✅ 必須 | ハッシュ計算した認証トークン(最も重要) |
qop | qop があると✅ 必須 | 認証品質。auth が一般的 |
nc | qop があると✅ 必須 | nonceの使用回数 |
cnonce | qop があると✅ 必須 | クライアントが生成するランダムな文字列 |
opaque | ❌ 任意 | サーバーから受け取った値をそのまま返すだけ |
Digest認証のメリットとデメリット
Digest認証のメリットとデメリットを以下に示します。
メリット
- パスワードが平文で送信されない
- ハッシュ化されたデータが送られるため、盗聴されにくい。
- リプレイ攻撃にある程度強い
- 認証のたびに異なる値(nonce)を使うため。
- HTTPSがなくてもある程度のセキュリティが確保できる
デメリット
- 実装がやや複雑
- サーバーとクライアント両方でハッシュの計算やnonceの扱いが必要
- 一部の環境では未対応
- 古いブラウザやツールでは使えない場合もある
- 現在はあまり使われない
- 現在はよりセキュアな認証方式(OAuthやJWT)が主流になってきている
本記事のまとめ
この記事では『Digest認証』について、以下の内容を説明しました。
- Digest認証は、Basic認証よりもセキュリティが強化されたHTTP認証方式。
- パスワードそのものは送信せず、ハッシュ化された値を送信する仕組み。
- 通信の盗聴によるパスワード漏洩リスクを軽減できる。
- サーバーはクライアントに「nonce(使い捨てトークン)」を送信するため、リプレイ攻撃を防止できる。
- クライアントはユーザー名・パスワード・nonceなどを使ってハッシュ値(response)を生成する。
お読み頂きありがとうございました。