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