Hi
   
  I am using Service Mix 3.2.2 version, and configured the CXF-BC and SE 
components using the light-weight mode.
  And also I configured the interceptor for WS Security in the file 
cxfBusConfig.xml and specified the file  in the cxf-bc. 
  
  I attached below the servicemix.xml and cxfBusConfig.xml
  
  I wish to perform the following..
   1) Parsing the SOAP header for the UserNameToken specified as per WSSE spec.
       The SOAP header contains elements a) Username b)Password c) Nonce d) 
Created time stamp
       
   2) Validate the user name and password in my application 
   
   3) If security header elements are not valid, interceptor fails and throws 
the some security exception
      otherwise  the client request gets processed by cxf-bc and cxf-se and 
returns the response
     
  
  I am getting the following exception with current configuration.
  
  Please help on configuring the the interceptor to parse the WS security SOAP 
header.
  
Thanks
Jack 
INFO: Server startup in 14078 ms
CircuitSecurityInterceptor:handleMessage()>>> *********  Invoked.. Start
CircuitSecurityInterceptor:handleMessage()>>> *********Adde ValidateIntercepter 
..
CircuitSecurityInterceptor:handleMessage()>>> *********  END........
CircuitPasswordHandler:handle()>>> *********  Invoked.. Start
CircuitPasswordHandler:handle()>>>Security details UID : CircuitUser01 Password 
: null Password Type
 : null
CircuitPasswordHandler:handle()>>> Password set on WSPasswordCallback
CircuitPasswordHandler:authenticated()>>>Start *********uid :CircuitUser01 
Passwd : null
CircuitPasswordHandler:authenticated()>>>END *********uid :CircuitUser01 Passwd 
: null
CircuitPasswordHandler:handle()>>> ********* uid :CircuitUser01 Passwd : null  
authenticated ..
CircuitPasswordHandler:handle()>>> *********  Invoked.. End
Nov 29, 2008 6:27:14 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.SecurityException: Unable to locate a login configuration
        at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:97)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
39)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorIm
pl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
        at java.lang.Class.newInstance0(Class.java:350)
        at java.lang.Class.newInstance(Class.java:303)
        at javax.security.auth.login.Configuration$3.run(Configuration.java:216)
        at java.security.AccessController.doPrivileged(Native Method)
        at 
javax.security.auth.login.Configuration.getConfiguration(Configuration.java:210)
        at javax.security.auth.login.LoginContext$1.run(LoginContext.java:237)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.login.LoginContext.init(LoginContext.java:234)
        at javax.security.auth.login.LoginContext.<init>(LoginContext.java:367)
        at javax.security.auth.login.LoginContext.<init>(LoginContext.java:444)
        at 
org.apache.servicemix.jbi.security.auth.impl.JAASAuthenticationService.authenticate(JAASA
uthenticationService.java:52)
        at 
org.apache.servicemix..cxfbc.interceptors.JbiJAASInterceptor.handleMessage(JbiJAASIntercep
tor.java:77)
        at 
org.apache.servicemix.cxfbc.interceptors.JbiJAASInterceptor.handleMessage(JbiJAASIntercep
tor.java:37)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
        at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:7
7)
        at 
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestinat
ion.java:278)
        at 
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.j
ava:252)
        at 
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
        at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:2
06)
        at org.mortbay.jetty.handler.HandlerList.handle(HandlerList.java:49)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at 
org..mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
        at 
org.mortbay.thread..BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
Caused by: java.io.IOException: Unable to locate a login configuration
        at com.sun.security.auth.login.ConfigFile.init(ConfigFile.java:206)
        at com.sun.security.auth.login.ConfigFile.<init>(ConfigFile.java:95)
        ... 34 more
        
cxfBusConfig.xml
------------------
<beans xmlns="http://www.springframework.org/schema/beans";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xmlns:cxf="http://cxf.apache.org/core";
       xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd";>
    <bean id="CircuitSecurityInterceptor" 
class="org.circuit.order.wss.CircuitSecurityInterceptor"/>
    <cxf:bus>
        <cxf:inInterceptors>
                 <ref bean="CircuitSecurityInterceptor"/>
        </cxf:inInterceptors>
    </cxf:bus>
</beans>
servicemix.xml
----------------
<beans xmlns="http://www.springframework.org/schema/beans";
       xmlns:sm="http://servicemix.apache.org/config/1.0";
    xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0";
    xmlns:cxfse="http://servicemix.apache.org/cxfse/1.0";
    xmlns:ckt="http://circuit.org/order/CircuitSearch"       
       xmlns:audit="http://servicemix.apache.org/audit/1.0";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";>
  
  <bean id="placeholderConfig" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" 
value="classpath:servicemix-web-console.properties" />
  </bean>
  
  <!-- JMX server -->
  <sm:jmxServer id="server" locateExistingServerIfPossible="true" />
  
  <!-- the JBI container -->
  <sm:container id="jbi" 
                rootDir="./data/smx" 
                MBeanServer="#server"
                monitorInstallationDirectory="false"
                monitorDeploymentDirectory="false"
                createJmxConnector="false">
    <sm:activationSpecs>  
  <sm:activationSpec>
     <sm:component>
       <cxfbc:component> 
         <cxfbc:endpoints> 
         <cxfbc:consumer wsdl="/WEB-INF/wsdl/CircuitIR.wsdl"
         busCfg="cxfBusConfig.xml"
      service="ckt:FrameRelayCircuit"
      interfaceName="ckt:FrameRelayCircuitPortType"
      targetEndpoint="CircuitPort"
      targetService="ckt:FrameRelayCircuit"
      targetInterface="ckt:FrameRelayCircuitPortType" />
       </cxfbc:endpoints>
      </cxfbc:component>   
      </sm:component>
     </sm:activationSpec>
     
     <sm:activationSpec>
              <sm:component>
                   <cxfse:component>
                         <cxfse:endpoints> 
                               <cxfse:endpoint>
                                     <cxfse:pojo>
                                           <bean 
class="org.circuit.order.circuitsearch.FrameRelayCircuitPortTypeImpl"/>
                                     </cxfse:pojo>
                               </cxfse:endpoint>
                         </cxfse:endpoints>
                   </cxfse:component>
             </sm:component>
     </sm:activationSpec>
  </sm:activationSpecs>
    
    <sm:listeners>
      <bean class="org.apache.servicemix.web.http.HttpComponentListener" />
    </sm:listeners>
         
    <sm:services>
      <sm:statistics statsInterval="10" dumpStats="true" />
    </sm:services>    
  </sm:container>
  <bean id="servletContext" 
class="org.springframework.web.context.support.ServletContextFactoryBean" />
  <bean id="rootDir" class="org.springframework.web.util.WebUtils" 
factory-method="getRealPath">
    <constructor-arg ref="servletContext" />
    <constructor-arg value="/data/smx" />
  </bean> 
  
  <sm:dotViewService container="#jbi" autoStart="true" />
</beans>         


      

Reply via email to