HTTP-аутентификация клиента является открытым процессом, позволяющим поставщикам реализовывать различные схемы аутентификации.
Помимо SSL (при работе по протоколу HTTP), имеющего собственный механизм аутентификации (для серверов и / или клиентов), задачей аутентификации по протоколу HTTP управляет заголовок WWW-Authenticate
в протоколе заголовка HTTP. Это поле отражает, требует ли сервер какой-либо аутентификации и как будет проходить аутентификация однорангового узла.
Это позволяет выполнять аутентификацию по протоколу равноправного узла (не только для клиента, но и для сервера), но делает метод HTTP независимым, поскольку процедура аутентификации ортогональна методу, используемому для запроса информации. Вы можете использовать аутентификацию с любыми (или всеми) методами http (GET, POST, CONNECT, HEAD, PUT, DELETE и т. Д.)
Вам необходимо прочитать документы RFC: 7230 , 7231 , 7232 , 7233 , 7234 и 7235 .
Более интересным для вас является 7234 (в нем описывается проверка подлинности протокола), и документация веб-сервера, который вы запрашиваете , и способ настройки службы для получить представление о методах аутентификации, которые он поддерживает, или учетных данных, которые вы должны предоставить для аутентификации клиента.
Обычно этот процесс выглядит следующим образом:
- клиент делает неаутентифицированный запрос информации для целевого URL.
- Сервер отклоняет запрос, должна использоваться аутентификация с сигнализацией и предлагает метод аутентификации и вызов.
- Клиент повторяет запрос, но предоставляет запрошенные учетные данные с сервера.
- Сервер принимает запрос или снова отклоняет его.
Следует отметить, что в зависимости от используемого метода аутентификации (например, BASIC - это простая схема имени пользователя / пароля, в то время как DIGEST вынуждает пользователя создавать дайджест на основе используемых учетных данных и некоторой информации, предоставленной сервером), вам может потребоваться больше чем одна поездка на сервер (сервер может заставить вас, хотя и не часто, использовать два из них в цепочке для предоставления вам доступа к ресурсам)
В случае Java, вероятно, хорошим источником документации является класс Apache HttpClient , и в нем есть несколько учебных пособий от Apache, которые показывают вам, как выполнять аутентифицированные запросы. Хорошая справка: это .