我有一个在JBoss服务器上运行的Java EE Web应用程序。客户端应用程序是用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)的角色名称也正确。但是Flex似乎不喜欢它。
可能有任何特殊原因吗?我是否可能缺少额外的配置?
欢迎任何帮助/建议/指导。