Hello, I am using the very latest: JBossAS 4.2.3.GA and JBossWS-Native 3.0.3.GA.
When my EJB is coded as follows: @Stateless | @WebService( | serviceName="MyBasicWS", portName = "MyBasicWSSOAP", | targetNamespace = "http://www.example.org/MyBasicWS/", | endpointInterface = "org.example.mybasicws.MyBasicWS") | @WebContext(authMethod="BASIC") | @RolesAllowed("friend") | public class MyBasicWSImpl { | public String echo(String in) { | System.out.println("RECEIVED: " + in); | return in; | } | } I use the following jboss.xml to set the security domain: <!DOCTYPE jboss PUBLIC | "-//JBoss//DTD JBOSS 4.2//EN" | "http://www.jboss.org/j2ee/dtd/jboss_4_2.dtd"> | <jboss> | <security-domain>java:/jaas/JBossWS</security-domain> | <webservices> | <context-root>myBasicWS</context-root> | </webservices> | </jboss> Everything works like a charm with the combination above (I must access the EJB as kermit/thefrog from the default jbossws-xxxx.properties files). However, I want to get rid of the @WebContext annotation. My idea (which does not work) is the following combination: @Stateless | @WebService( | serviceName="MyBasicWS", portName = "MyBasicWSSOAP", | targetNamespace = "http://www.example.org/MyBasicWS/", | endpointInterface = "org.example.mybasicws.MyBasicWS") | //@WebContext(authMethod="BASIC") | //Undesirable | //The above should be picked up from jboss.xml | @RolesAllowed("friend") | public class MyBasicWSImpl { | public String echo(String in) { | System.out.println("RECEIVED: " + in); | return in; | } | } Then, I try to express that the EJB must use BASIC authentication method as follows: <!DOCTYPE jboss PUBLIC | "-//JBoss//DTD JBOSS 4.2//EN" | "http://www.jboss.org/j2ee/dtd/jboss_4_2.dtd"> | <jboss> | <security-domain>java:/jaas/JBossWS</security-domain> | <webservices> | <context-root>myBasicWS</context-root> | </webservices> | <enterprise-beans> | <session> | <ejb-name>MyBasicWSImpl</ejb-name> | <port-component> | <port-component-name>MyBasicWSSOAP</port-component-name> | <auth-method>BASIC</auth-method> | </port-component> | </session> | </enterprise-beans> | </jboss> In this case however, the client throws an authorization failure exception: javax.xml.ws.soap.SOAPFaultException: Authorization failure | at org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.getSOAPFaultException(SOAPFaultHelperJAXWS.java:77) | at org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.throwFaultException(SOAP11BindingJAXWS.java:107) | at org.jboss.ws.core.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:577) | at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:381) | at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:291) | at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:170) | at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150) | at $Proxy19.echo(Unknown Source) | at test.TestBasicWS.basicAuthTest(TestBasicWS.java:41) On the server side, I see this: 15:41:47,349 ERROR [RoleBasedAuthorizationInterceptor] Insufficient permissions, principal=null, requiredRoles=[friend], principalRoles=[] | 15:41:47,349 ERROR [SOAPFaultHelperJAXWS] SOAP request exception | javax.ejb.EJBAccessException: Authorization failure | at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptor.invoke(RoleBasedAuthorizationInterceptor.java:120 Apparently, JBoss disregards the BASIC-auth and does NOT assign a principal to the session. Therefore the role-based authenticator denies access to the method (as it should). Apparently, my jboss.xml does not tell JBoss to associate basic-auth with the published web service. I was suspicious of what I should put in the "port-component-name" value. Supposedly, the documentation says: Maps to the port-component-name in the webservices.xml descriptor. However, I do not use a webservices.xml file but use the @WebService annotation instead. In the code above I use the value for the "portName" attribute of @WebService but I also tried the ejb-name (MyBasicWSImpl) and the serviceName (MyBasicWS) with no luck. Any clues as to how I can achieve this while keeping the code JBoss-clear? View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4171766#4171766 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4171766 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
