JAAS: при обратном вызове (интересно на основе заголовков HTTP)

Я использую NameCallback и PasswordCallback для имени пользователя и пароля. Для имени пользователя и пароля всплывающее окно появляется в браузере, и когда я ввожу имя пользователя и пароль, JAAS аутентифицирует мой запрос.

На wirehark я видел, что приходит сообщение 401 Unauthorized (заголовок WWW-Authenticate), и когда я ввожу имя пользователя/пароль, создается HTTP-запрос с учетными данными (с заголовком авторизации) и отправляется на сервер.

Мое требование: я не хочу, чтобы всплывало всплывающее окно. Мое приложение на другом сервере имеет имя пользователя/пароль, поэтому, как только оно получило 401, на основе некоторой логики оно сгенерирует HTTP-запрос с заголовком/учетными данными авторизации. и отправил обратно.

FLow: Пользователь -> Другой сервер -> Мой Tomcat5.5

Здесь, на другом сервере, никто не может ввести имя пользователя/пароль вручную. Приложение развернуто, и оно только сгенерирует HTTP-запрос с учетными данными и отправит его обратно в tomcat.

Можем ли мы иметь какой-либо другой обратный вызов, который ведет себя так. Нужна ваша помощь. Пожалуйста, предоставьте мне отзыв, связанный с подходом.

Изменить вопрос:

Вот реальный случай:

Пользователь A сделал вызов (протокол SIP) на сервер XYZ. Приложение, развернутое на сервере XYZ, создает запрос HTTP REST и отправляет его на сервер Tomcat, где развернуто одно приложение, чтобы получить некоторые данные учетной записи пользователя. , мне придется его аутентифицировать. Я использую реализацию tomcat JAASRealm.

Теперь для аутентификации, что делает tomcat, он выводит окно имени пользователя/пароля на сервере XYZ. На сервере XYZ, поскольку приложение создало HTTP-запрос, поэтому здесь никто не вводит имя пользователя/пароль вручную (поскольку это не относится к Устройство пользователя А).

Я ищу способ, когда это всплывающее окно не появляется, и приложение, развернутое на сервере XYZ, должно делать что-то вроде:

если (ответ равен 401), создайте HTTP-запрос с учетными данными.

Поэтому я искал решение, в котором не появляется всплывающее окно. Теперь все ясно, пожалуйста, предложите.


person VJS    schedule 12.06.2012    source источник


Ответы (1)


Ваше приложение должно использовать java.net.Authenticator для предоставления учетных данных HttpURLConnection, а не работать напрямую с заголовками 401 и WWW-Authenticate.

person user207421    schedule 12.06.2012
comment
Престижность за возможность расшифровать совершенно запутанный вопрос. - person BalusC; 12.06.2012
comment
@EJP: Спасибо ... На самом деле я использую реализацию tomcat5.5 на основе JAASRealm ... Что касается прикладной части ... я согласен с вашим комментарием ... понял суть ... Одна вещь Я хотел бы спросить, есть ли у них какой-либо способ остановить всплывающее окно для имени пользователя/пароля... - person VJS; 12.06.2012
comment
@VJS Всплывающее окно появляется только в браузерах в ответ на ошибку 401. Невозможно, чтобы то, во что вы входите, могло показать всплывающее окно вашему HTTP-клиенту, потому что ваш HTTP-клиент не является браузером. Вы имеете в виду, что произойдет, если пользователь попытается просмотреть ту же страницу? Ваш вопрос остается совершенно запутанным: я полностью согласен с BalusC; и вместо того, чтобы стрелять в посыльного, вам следует позаботиться о том, чтобы сделать ваш вопрос более понятным, чтобы вы с большей вероятностью получили ответы. - person user207421; 12.06.2012
comment
@VJS Вы пробуете это с HTTP-клиентом. Java — это HTTP-клиент. Re BalusC, вы можете продолжать стрелять по мессенджеру, но единственное, что здесь следует отметить, это то, что даже после того, как два человека сказали вам, что ваш вопрос совершенно запутан, вы все равно не предприняли ноль попыток прояснить его. - person user207421; 12.06.2012
comment
@EJP: Пожалуйста, посмотрите еще раз. Я упомянул сценарий. Я действительно волновался, когда публиковал сообщения.. Дайте мне знать, если теперь все ясно. - person VJS; 12.06.2012
comment
@VJS Повторяю. Всплывающие диалоговые окна браузеров. Tomcat не выводит диалоговые окна на XYZ или где-либо еще. Если вы не закодировали это в своем приложении. В этом случае ответ «не надо». - person user207421; 12.06.2012