- Я сделал Http-модуль для дайджест-аутентификации. На сервере при каждом запросе страницы этот модуль проверяет наличие заголовка «authenticate». Если этот заголовок не существует, пользователь получит сообщение 401.
- На стороне клиента я использую плагин jQuery для дайджест-аутентификации.
Для знаю, что у меня есть текущая функциональность:
- Пользователь вводит имя пользователя и пароль в два поля ввода (не в строке HTTP-аутентификации браузера)
- С jQuery я делаю вызов ajax на какую-то защищенную страницу на сервере. Этот вызов ajax основан на протоколе Digest Http. Это означает, что я добавляю заголовок аутентификации с именем пользователя, noncecount, clientnonce, хешированным паролем MD5 и т. д.
- Затем ответ сервера с сообщением 200 :)
Если пользователь перейдет на другую страницу, он получит «401 доступ запрещен», потому что в этом запросе нет заголовка аутентификации. И в этом проблема.
- Если я использую стандартный протокол дайджеста, то браузер автоматически добавляет заголовок авторизации в каждый запрос, и у меня нет этой проблемы. Но я использую этот способ, потому что мне не нужно, чтобы пользователь заполнил свои учетные данные в диалоговом окне HTTP-аутентификации браузера. Мы хотим иметь свой собственный диалог. В плагине jQuery DigestJ заголовок называется «аутентификация» вместо «авторизация», а протокол называется DigestJ вместо Digest. Таким образом, я не получаю диалог браузера Http для ввода учетных данных, когда сервер отвечает сообщением 401. Мы не можем использовать проверку подлинности с помощью формы.
- Я могу хранить учетные данные пользователя на стороне клиента с помощью плагина сеанса jQuery, но как изменить заголовки Http для каждого запроса? Мне нужно добавить заголовок «аутентификация» и вставить учетные данные из сеанса.