1つ。基本認証の概要
HTTPプロトコル通信プロセス中に、HTTPプロトコルは基本認証プロセスを定義して、HTTPサーバーがWebブラウザーでユーザーIDカードを実行できるようにします。クライアントがHTTPサーバーにデータ要求を行うと、クライアントが認証されていない場合、HTTPサーバーは、基本認証プロセスを介してクライアントのユーザー名とパスワードを確認して、ユーザーが合法かどうかを判断します。 HTTP ServerのID認証要求を受信した後、クライアントはユーザーにユーザー名とパスワードを入力するように促し、Base64でユーザー名とパスワードを暗号化します。暗号化された暗号文は、リクエスト情報に添付されます。たとえば、ユーザー名がAnjutaで、パスワードが123456の場合、クライアントはユーザー名とパスワードを「:」とマージし、base64とマージした文字列を暗号文として暗号化し、データが要求されるたびにciphertextをリクエストヘッダーに追加します。 HTTPサーバーがリクエストパケットを受信するたびに、プロトコルに従ってクライアントに添付されたユーザー情報(base64暗号化されたユーザー名とパスワード)が取得され、リクエストパケットの包装を開始し、ユーザー名とパスワードを検証します。ユーザー名とパスワードが正しい場合、クライアントの要求に従ってクライアントが必要とするデータを返します。それ以外の場合は、エラーコードを返すか、ユーザー名とパスワードを提供するようにクライアントに再リケストします。
二。基本認証のプロセス
1.クライアントはサーバーからデータを要求し、要求されたコンテンツはWebページまたは別のMimeタイプである場合があります。この時点で、クライアントがまだ検証されていないと仮定すると、クライアントはサーバーに次の要求を提供します。
get /index.html http /1.0を取得します
ホスト:www.google.com
2。サーバーは、検証要求コード401をクライアントに送信し、サーバーによって返されるデータは次のとおりです。
HTTP/1.0 401不正
サーバー:Sokevo/1.0
www-authenticate:Basic Realm = "Google.com"
コンテンツタイプ:Text/HTML
コンテンツレングス:xxx
3.クライアントがHTTP1.0または1.1の仕様(IE、Firefoxなど)に準拠した401リターン値を受信すると、ログインウィンドウが自動的にポップアップし、ユーザーがユーザー名とパスワードを入力する必要があります。
4.ユーザーがユーザー名とパスワードを入力すると、ユーザー名とパスワードがBase64暗号化で暗号化され、ciphertextは以前の要求情報に配置されます。クライアントが送信した最初の要求情報は、次のコンテンツになります。
get /index.html http /1.0を取得します
ホスト:www.google.com
Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
注:xxxx ....暗号化されたユーザー名とパスワードを表します。
5.上記の要求情報を受信した後、サーバーは承認フィールドの後にユーザー情報を取得および復号化し、復号化されたユーザー名とパスワードをユーザーデータベースと比較および検証します。ユーザー名とパスワードが正しい場合、サーバーはリクエストに従って要求されたリソースをクライアントに送信します。
三つ。基本認証の短所
HTTP基本認証の目標は、簡単なユーザー認証関数を提供することです。認証プロセスはシンプルで明確で、セキュリティ要件が低いシステムまたはデバイスに適しています。たとえば、すべての人が使用するルーターの構成ページの認証は、ほとんど常に採用されています。欠点は、ドメイン(ドメインまたはレルム)認証機能を提供できないなど、柔軟で信頼性の高い認証戦略がないことです。さらに、Base64の暗号化強度は非常に低いため、Sohuの検索が検索されるのを防ぐことしかできません。もちろん、HTTP基本認証システムをSSLまたはKerberosと組み合わせて、セキュリティパフォーマンスの高い認証システムを実現することもできます(比較的)
4。基本的な認定Java実装コード
httpsession session = request.getSession(); string user =(string)session.getattribute( "user");文字列パス; if(user == null){try {respons.setcharacterencoding( "gbk"); printwriter ut = response.getWriter();文字列承認= request.getheader( "authorization"); if(authorization == null || authorization.equals( "")){respons.setStatus(401); Response.setheader( "www-authenticate"、 "Basic Realm =/"管理者パスワード/""を入力してください); out.print( "許可を与えてくれて申し訳ありません!!");戻る; } string userandpass = new String(new Base64Decoder()。decodeBuffer(authorization.split( "" ")[1])); if(userandpass.split(": ")。 out.print(許可を得ていない場合!!」 Dispatcher.GetRequestDispatcher( ") ex){ex.printstacktrace();上記は、あなたに提起された基本認証を使用したHTTPの原則と実装方法に関する簡単な議論です。誰もがwulin.comをもっとサポートできることを願っています〜