У меня есть веб-приложение Java EE, которое работает на сервере JBoss.Клиентское приложение написано на Flex, поэтому сервер связывается с клиентом через GraniteDS.
Для обеспечения безопасности я хочу добавить ограничение безопасности на конечные точки graniteamf / *, чтобы ограничить доступ только кпользователи с ролью «appuser».
web.xml
<security-constraint>
<display-name>GraniteAmf</display-name>
<web-resource-collection>
<web-resource-name>AMFServlet</web-resource-name>
<description>Protect resource</description>
<url-pattern>/graniteamf/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint id="Application Users">
<role-name>appuser</role-name>
</auth-constraint>
</security-constraint>
Однако, когда я пытаюсь войти в клиентское приложение, Flex возвращаетОшибка 403:
Client.Error.MessageSend [ChannelFaultEvent faultCode="Channel.Connect.Failed" faultString="error" faultDetail="NetConnection.Call.Failed: HTTP: Status 403: url: 'http://localhost:8080/application-artifact/graniteamf/amf'" channelId="graniteamf" type="channelFault" bubbles=false cancelable=false eventPhase=2] Send failed Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 403: url: 'http://localhost:8080/application-artifact/graniteamf/amf'.
Обратите внимание, что учетные данные пользователя (имя пользователя и пароль верны) и имя роли, назначенное пользователю (appuser), также правильно.Но Флексу это не нравится.
Есть какая-то конкретная причина, почему это может быть?Возможно, мне не хватает дополнительной конфигурации?
Любая помощь / совет / направление приветствуются.