#authentication #basic-authentication #wildfly #undertow
#аутентификация #basic-аутентификация #wildfly #undertow
Вопрос:
Использование Wildfly 8.1.0.Final
Я хочу создать веб-приложение, для которого требуется базовая аутентификация для доступа к /api/*, но остальная часть приложения должна быть открыта. Для достижения этой цели у меня есть следующее web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<security-constraint>
<web-resource-collection>
<web-resource-name>Api access</web-resource-name>
<url-pattern>/api/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>api</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>api</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Authentication requires api access</realm-name>
</login-config>
</web-app>
Тестирование с помощью браузера, это работает так, как ожидалось.
http://localhost:8080/myapp/api
…требуется аутентификация.
http://localhost:8080/myapp
…не требует аутентификации.
Здесь начинается сложная часть:
Третья сторона обращается к /myapp и включает заголовок авторизации в запрос:
Authorization: Basic ZGlsbDpkYWxs
Это не пользователь, зарегистрированный в wildfly, но это не должно иметь значения, потому что /myapp открыт и не требует авторизации. Однако происходит следующее:
401 Unauthorized
Почему? Я не говорил undertow использовать какие-либо ограничения безопасности для / myapp, но по умолчанию он использует ограничения безопасности, которые я зарегистрировал для / myapp / api
Это новое поведение, которое было введено с undertow, потому что с Jboss КАК 7.1.1.Final этого не произошло.
Как я могу сказать undertow не использовать авторизацию для открытого ресурса, когда авторизация включена в запрос?
Ответ №1:
Я могу подтвердить проблему с WildFly 8.1.0.Final. GlassFish 4.0 не отвечает 401 в том же сценарии.
Я отправил проблему: https://issues.jboss.org/browse/WFLY-3590