Я пытаюсь использовать Dropwizard как полный веб-сервер, объединяющий общедоступные страницы, защищенные страницы и данные через REST API. Таким образом, я проверяю возможность защиты некоторых маршрутов, применяя специальную схему авторизации на основе вычисленного токена и области для управления различными областями безопасности.Dropwizard - как достичь пользовательской схемы авторизации?
У меня есть трудности, чтобы понять, как достичь цели. Последовательность я ожидал следующий:
- отобразить страницу входа в HTML с формой пользователя
- пользователь вводит свои учетные данные
- вызвать маршрут AUTHENTICATE для проверки учетных данных и создать маркер для пользователя. Отправить назад приветственную страницу с Authorization заголовок, как: MyScheme маркер = «TYGDF655HD88D098D0970CUCHD987D897», царств = «SUPER SECRET Stuff»
- пользователь нажимает на ссылку, чтобы перечислить его счета-фактуры:/HTML/счета
- этот маршрут защищен DropWizard @Auth аннотация
- ни один заголовок не отправляется браузером, поэтому сервер отвечает с ответом 401 с заголовком: WWW-Authenticate MyScheme realm = «SUPER SECRET STUFF», бросая вызов браузеру, чтобы дать ему заголовок авторизации, соответствующий вызову
К сожалению, браузер не отправил этому заголовку. Согласно многим статьям, я думал, что браузерный кэш авторизации для всех полученных учетных данных, их схемы и параметров (таких как область).
У браузера есть такое поведение для известных схем, таких как обычная проверка подлинности, но не для пользовательской схемы (кстати, обычно это проблема для базового auth, поскольку браузер не может «выйти из системы» пользователя, так как он не выполняет стереть веб-историю или закрыть браузер).
Как вы думаете, что можно сказать браузеру кэшировать учетные данные авторизации и добавлять их каждый раз, когда запрос сервера бросает вызов правильной схеме/сфере?
Я могу отобразить здесь все примеры кодов, которые я использую для запуска этого примера.
Ссылка (хорошо читать): RFC1945 на http://tools.ietf.org/html/rfc1945#section-11
Спасибо за вашу помощь.
Запуск dropWizard 0.9.2 на JDK Oracle 1.8/Debian 8.
Благодарим вас за ответ. Если браузер не должен управлять _Authorization cache_, как он может ответить на запрос ** 401 **, который бросает вызов ему о некоторых учетных данных в области безопасности? Если основной auth задействован, браузер может открыть диалоговое окно входа в систему, а затем отправить соответствующий заголовок, но по неизвестной схеме, как продолжить? – mnementh64
@ mnementh64 Задача браузера состоит в том, чтобы просто создать запрос и передать его на сервер. Сервер отвечает сообщением об ошибке. Поэтому, если вы получаете 401, сервер обрабатывает его. На мой взгляд, вы должны отлаживать код сервера. Вы должны написать код на сервере, который будет обрабатывать настраиваемый заголовок. – Nasir
О, извините, я не прояснился. Это сервер, который отвечает на ответ с состоянием 401, и это нормально, потому что ресурс, который вы хотите получить, требует аутентификации. Поэтому браузер должен сделать что-то с этим. Я знаю, что этот случай обычно управляется с помощью файлов cookie (которые повторно отправляются браузером в каждом запросе). Должно быть что-то я пропустил ... – mnementh64