HttpServer
私はそのかなり基本的なテストに使用するJavaの実装を持っており、クライアントに提供されるものをその場で調整できることを意味します。私のコードは apache http クライアントを使用しています。
この実装を使用して認証をテストしたいのですが、いくつか問題があります。私の問題は、コードが認証されず、最初のリクエストが送信され、サーバーが 401 で応答するが、http クライアントが応答しないことです。認証タイプのリストを調べますが、BASIC を選択することはありません
ブラウザを使用して同じ URL に接続すると、プロンプトが表示され、資格情報を送信するとログインします。コードを変更して、コードが他のサーバーにログインしようとすると、成功するので、両端が機能することがわかります!
クライアント側とサーバー側で接続を有線接続しましたが、表示される違いは次のとおりです。
- 接続が成功すると、後続のリクエストは GET ではなく POST として送信されます。
- 私のサーバーが応答するとき、認証ヘッダーはWWWではなくWwwです(動作するときと同じです)
編集:
http コードを見ると、大文字と小文字の区別が問題になることはありません。最初の応答は失敗するもので、2 番目は機能するものです。
失敗する
GET /testing HTTP/1.1
Host: 192.168.30.65:8000
Connection: Keep-Alive
User-Agent: Apache-HttpAsyncClient/4.0-beta1 (java 1.5)
HTTP/1.1 401 Unauthorized
Content-length: 0
Www-authenticate: Basic realm="myRealm"
作品
GET /svn HTTP/1.1
Host: svnserver
Connection: Keep-Alive
User-Agent: Apache-HttpAsyncClient/4.0-beta1 (java 1.5)
HTTP/1.1 401 Authorization Required
Date: Mon, 16 Apr 2012 09:51:58 GMT
Server: Apache/2.2.3 (CentOS)
WWW-Authenticate: Basic realm="Subversion Repository"
Content-Length: 475
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
<!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>
<hr>
<address>Apache/2.2.3 (CentOS) Server at svnserver Port 80</address>
</body></html>
GET /svn HTTP/1.1
Host: svnserver
Connection: Keep-Alive
User-Agent: Apache-HttpAsyncClient/4.0-beta1 (java 1.5)
Authorization: Basic YQVkd2Gm3GS6dXNjbMk5