Спецификация HTTP:Прокси-Авторизация и заголовки авторизации

Итак, я пытаюсь реализовать следующий сценарий:

  • Приложение защищено базовой аутентификацией. Допустим, он размещен на app.com
  • . Прокси-сервер HTTP перед приложением также требует аутентификации. Он размещен на proxy.com

. Поэтому пользователь должен предоставить учетные данные как для прокси-сервера, так и для приложения в одном и том же запросе, поэтому у него есть разные пары имя пользователя/пароль:одна пара для аутентификации себя в приложении, а другое имя пользователя/пароль пары, чтобы аутентифицировать себя против прокси.

Прочитав спецификации, я не очень понял, как мне это реализовать. Я думал сделать следующее::

  1. Пользователь делает HTTP-запрос к прокси-серверу без какой-либо аутентификации.
  2. Прокси отвечает 407 Proxy Authentication Requiredи возвращает заголовок Proxy-Authenticateв формате :"Proxy-Authenticate: Basic realm="proxy.com".
    Вопрос:Правильно ли установлен заголовок Proxy-Authenticate?
  3. Затем клиент повторяет запрос с заголовком Proxy-Authorization, который является представлением прокси-сервера в формате Base64 username:password.
  4. На этот раз прокси аутентифицирует запрос, но затем приложение отвечает заголовком 401 Unauthorized. Пользователь был аутентифицирован прокси-сервером, но не приложением. Приложение добавляет к ответу заголовок WWW-Authenticate, например WWW-Authenticate: Basic realm="app.com". Вопрос:это значение заголовка верно, верно?
  5. Клиент снова повторяет запрос с заголовком Proxy-Authorizationи заголовком Authorization, значением которого является представление Base64 username:passwordприложения.
  6. В этот момент прокси-сервер успешно аутентифицирует запрос, перенаправляет запрос в приложение, которое также аутентифицирует пользователя. И клиент, наконец, получает ответ.

Правильно ли работает весь рабочий процесс?

42
задан Mark 5 April 2012 в 06:26
поделиться