How to load a .properties file in felix for enable Ws-Security using CXF WSS4J?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Akshya
    New Member
    • Jul 2012
    • 3

    How to load a .properties file in felix for enable Ws-Security using CXF WSS4J?

    My MetaDate.xml file is:-

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Copyright (c) Orga Systems GmbH and/or its affiliates, 2011 - 2012 All 
    	Rights Reserved. The software contained on this media is proprietary to and 
    	embodies the confidential technology of the copyright holder. Possession, 
    	use, duplication or dissemination of the software and media is authorized 
    	only pursuant to a valid written license from the copyright holder. This 
    	copyright notice must appear in all copies of this software. -->
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:cxf="http://cxf.apache.org/core"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    						http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
    						http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    
    	<!-- webservice bean defintions can refer to parent "webserviceImplParent" 
    		(defined in ws-core-context.xml) to inherit injection of mandatory dependecies 
    		and init-method. Can be overridden here if required -->
    
    	<bean id="getAccountImpl" class="com.orga.oslee.bsg.ra.ws.GetAccountImpl" parent="webserviceImplParent" />
    	
    
    	<bean id="ServerPasswordCallback" class="com.orga.oslee.bsg.ra.ws.ServerPasswordCallback" />
    
    	<jaxws:endpoint xmlns:tns="http://oslee.orga.com/bsg/ra/ws"
    		id="getAccount" implementor="#getAccountImpl"
    		wsdlLocation="/data/AJENA/Sec_Aks/JavaProducts_oslee_bsg_dev_R1.1_security_test_Sec_Aks/install/conf/com.orga.oslee.ra.bsgws.BSGStandardWebservice-dev-R1.0.0/BSGAccountServices.wsdl"
    		endpointName="tns:GetAccountPort" serviceName="tns:GetAccountService"
    		address="http://kolps12:33333/getaccount">
    
    
    		<jaxws:outInterceptors>
    			<ref bean="TimestampSignEncrypt_Response" />
    		</jaxws:outInterceptors>
    		
    		
    		<jaxws:inInterceptors>
    			<ref bean="TimestampSignEncrypt_Request" />
    		</jaxws:inInterceptors>
    		
    	</jaxws:endpoint>
    	
    
    	<!-- WSS4JInInterceptor for decrypting and validating the signature of the 
    		SOAP request. -->
    	<bean id="TimestampSignEncrypt_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
    		<constructor-arg>
    			<map>
    				<entry key="action" value="Timestamp Signature Encrypt" />
    				<entry key="signaturePropFile" value="serviceKeystore.properties" />
    				<entry key="decryptionPropFile" value="serviceKeystore.properties" />
    				<entry key="passwordCallbackClass" value="com.orga.oslee.bsg.ra.ws.ServerPasswordCallback" />
    			</map>
    		</constructor-arg>
    	</bean>
    	
    	
    
    	<!-- WSS4JOutInterceptor for encoding and signing the SOAP response. -->
    	<bean id="TimestampSignEncrypt_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
    		<constructor-arg>
    			<map>
    				<entry key="action" value="Timestamp Signature Encrypt" />
    				<entry key="user" value="myservicekey" />
    				<entry key="signaturePropFile" value="serviceKeystore.properties" />
    				<entry key="encryptionPropFile" value="serviceKeystore.properties" />
    				<entry key="encryptionUser" value="useReqSigCert" />
    				<entry key="passwordCallbackClass" value="com.orga.oslee.bsg.ra.ws.ServerPasswordCallback" />
    				<entry key="signatureParts"
    					value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
    				<entry key="encryptionParts"
    					value="{Element}{http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body" />
    				<entry key="encryptionSymAlgorithm" value="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
    			</map>
    		</constructor-arg>
    	</bean>
    </beans>

    My Keystore.proper ties file was:-

    Code:
    org.apache.ws.security.crypto.merlin.keystore.file=/data/AJENA/Sec_Aks/JavaProducts_oslee_bsg_dev_R1.1_security_test_Sec_Aks/Component/build/ORGA/OSLEE/ws-standard/src/com/orga/oslee/bsg/ra/ws/temp/keys/Keystore.jks
    org.apache.ws.security.crypto.merlin.keystore.password=abpass
    org.apache.ws.security.crypto.merlin.keystore.type=jks
    org.apache.ws.security.crypto.merlin.keystore.alias=myservicekey
    Here I put my Keystore.proper ties file in src folder and the key.jks file in a temp/keys folder which is under src folder of my Web Service project.


    But my problem is when ever I am trying to send any request using SOAP UI it will show the error i.e. :-


    org.apache.cxf. binding.soap.So apFault: General security error (Cannot load the resource serviceKeystore .properties)
    at org.apache.cxf. ws.security.wss 4j.WSS4JInInter ceptor.createSo apFault(WSS4JIn Interceptor.jav a:643)
    at org.apache.cxf. ws.security.wss 4j.WSS4JInInter ceptor.handleMe ssage(WSS4JInIn terceptor.java: 308)
    at org.apache.cxf. ws.security.wss 4j.WSS4JInInter ceptor.handleMe ssage(WSS4JInIn terceptor.java: 85)
    at org.apache.cxf. phase.PhaseInte rceptorChain.do Intercept(Phase InterceptorChai n.java:263)
    at org.apache.cxf. transport.Chain InitiationObser ver.onMessage(C hainInitiationO bserver.java:12 3)
    at org.apache.cxf. transport.http_ jetty.JettyHTTP Destination.ser viceRequest(Jet tyHTTPDestinati on.java:323)
    at org.apache.cxf. transport.http_ jetty.JettyHTTP Destination.doS ervice(JettyHTT PDestination.ja va:289)
    at org.apache.cxf. transport.http_ jetty.JettyHTTP Handler.handle( JettyHTTPHandle r.java:72)

    Caused by: org.apache.ws.s ecurity.WSSecur ityException: General security error (Cannot load the resource serviceKeystore .properties)
    at org.apache.ws.s ecurity.compone nts.crypto.Cryp toFactory.getPr operties(Crypto Factory.java:24 3)
    at org.apache.ws.s ecurity.compone nts.crypto.Cryp toFactory.getIn stance(CryptoFa ctory.java:168)
    at org.apache.cxf. ws.security.wss 4j.AbstractWSS4 JInterceptor.lo adCryptoFromPro pertiesFile(Abs tractWSS4JInter ceptor.java:202 )
    at org.apache.ws.s ecurity.handler .WSHandler.load Crypto(WSHandle r.java:805)
    at org.apache.ws.s ecurity.handler .WSHandler.load SignatureCrypto (WSHandler.java :726)
    at org.apache.ws.s ecurity.handler .WSHandler.deco deSignaturePara meter2(WSHandle r.java:1090)
    at org.apache.ws.s ecurity.handler .WSHandler.doRe ceiverAction(WS Handler.java:27 2)
    at org.apache.cxf. ws.security.wss 4j.WSS4JInInter ceptor.handleMe ssage(WSS4JInIn terceptor.java: 242)


    According to a document I also tried by inserting the class folder of key.jks class in the Libraries of my Web Service project.

    Please tell me what to do to resolve this?
Working...