HTTP認証について
1993 ワード
HTTP認証
Basic認証
- ユーザー名とパスワードを:で区切り, BASE64でエンコードした文字列をHTTPヘッダのAuthorizationに指定する.
- 認証情報を平文で送るため盗聴される恐れがあるため, SSLにより通信を暗号化する等の対策が必要になる.
Base64
- バイナリをテキストに置換する変換方式.
- 英大文字, 英小文字, 数字,+ ,/の64文字が使用される.
- 元データを6 bitずつに区切り, 整数値(0-63)を変換表に従って置換する. 6 bitに満たない場合は0でパディングする.
- 変換表は以下の通り.
整数値 | 変換後文字 |
---|---|
0-25 | A-Z |
26-51 | a-z |
52 | + |
53 | / |
- byte単位でデータを扱うため,変換後の文字列は4文字単位の必要がある. 4文字に満たない場合は=でパディングする.
Digest認証
- クライアントでユーザー名, パスワード, ランダムな文字列をMD5でハッシュ化し, サーバーに送信する. サーバー側でもハッシュ値を計算し, クライアントから送信されたハッシュ値と合致するかを検証する.
- ハッシュ値を送信するため, パスワードを平文で送らないという点でBasic認証に比べて盗聴に耐性がある.
フロー
- クライアントは認証ページにアクセスする.
- サーバーは401を返し認証を要求する. その際にランダムな文字列であるnonceをレスポンスに含める.
- クライアントでユーザー名とパスワードを入力する.
- クライアントでランダムな文字列であるcnonceを生成し, ユーザー名, パスワード, nonce, cnonceをMD5でハッシュ化しサーバーに送信する.
- サーバーでもユーザー名, パスワード, nonce, cnonceをMD5でハッシュ化し, クライアントから送信された値と合致するか検証する.
- 成功した場合はコンテンツを返す.
参考
Author And Source
この問題について(HTTP認証について), 我々は、より多くの情報をここで見つけました https://qiita.com/maitake9116/items/c04cad8d34ee5c84d342著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .