Проблемы базовой аутентификации Java HttpServer
У меня есть реализация Java HttpServer
что я использую для тестирования его довольно простой и означает, что я могу настроить то, что подается клиенту на лету. Мой код использует HTTP-клиент Apache.
Я хотел бы проверить некоторую аутентификацию с использованием этой реализации, но у меня возникли некоторые проблемы. Моя проблема в том, что мой код никогда не аутентифицируется, первоначальный запрос отправляется, и сервер отвечает 401, но клиент http никогда не отвечает. Он проходит список типов аутентификации, но никогда не выбирает BASIC
Если я подключаюсь к тому же URL-адресу с помощью моего браузера, меня просят, и когда я отправляю учетные данные, он входит в систему. Если я изменяю свой код, чтобы код пытался войти на какой-либо другой сервер, это успешно, поэтому я знаю, что оба конца работают!
Я проверил соединение на стороне клиента и сервера, и я вижу следующие различия:
- Когда соединение установлено, последующий запрос отправляется как POST, а не как GET.
- когда мой сервер отвечает, аутентификационный заголовок Www, а не WWW (как это происходит, когда он работает)
РЕДАКТИРОВАТЬ:
Просматривая http-код, чувствительность к регистру не должна вызывать каких-либо проблем. Первый ответ - тот, который терпит неудачу, и второй - тот, который работает:
Сбой
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