Я разрабатываю приложение в AngularJS для интерфейсного и JavaEE для внутренних. В моем приложении AngularJS я пытаюсь получить доступ к ресурсу REST, предоставленному моим внутренним концом. этот ресурс защищен JAAS, поэтому доступ к ресурсу может получить только аутентифицированные пользователи.Ускоренная аутентификация браузера AngularJS
в моем AngularJS приложение:
$http.get('/webresources/project/').success(function(data){...}).error(function(){...});
проект ресурс защищен мой web.xml файл:
...
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/webresources/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
...
Дело в том, что, когда я пытаюсь получить доступ к этому ресурсу когда он не аутентифицирован, браузер отображает приглашение для входа и мой запрос находится в состоянии ожидания, пока я не нажму Отмените, затем ответ i s 401 с заголовком WWW-Authenticate.
Что я хочу, так это то, что я могу избавиться от приглашения на вход в браузер и показать свою собственную форму входа. Поэтому я нашел некоторые решения, но я не знаю, как их реализовать:
1- Скажите внутреннему контенту, чтобы не отправлять заголовок WWW-Authenticate. Как это сделать на Java?
2- Отправить другой код статуса вместо 401. Правильно ли это. ? если да: как это сделать?
Благодарим за помощь.
ОК Ребята, я нашел что-то странное. Я попытался добавить заголовок «Авторизация», инициализированный значением «Basic» в заголовках запроса: '$ http.defaults.headers.common ['Authorization'] = 'Basic';' и он работает в Firefox (без браузера login приглашение), но в Chrome снова появляется запрос на вход в браузер. – Hurricane13
Вы нашли решение проблемы? У меня есть аналогичная проблема, и я не могу ее исправить. – zip