You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by na...@apache.org on 2008/01/18 15:28:37 UTC

svn commit: r613171 - in /webservices/rampart/trunk/java/modules/rampart-samples/policy: sample03/ sample04/ sample05/ sample05/src/org/apache/rampart/samples/policy/sample05/

Author: nandana
Date: Fri Jan 18 06:28:36 2008
New Revision: 613171

URL: http://svn.apache.org/viewvc?rev=613171&view=rev
Log:
Extended the sample 05 to make a service request using the issued token 

Added:
    webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/policy.xml   (with props)
    webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/sts_policy.xml
Modified:
    webservices/rampart/trunk/java/modules/rampart-samples/policy/sample03/services.xml
    webservices/rampart/trunk/java/modules/rampart-samples/policy/sample04/services.xml
    webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/services.xml
    webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java

Modified: webservices/rampart/trunk/java/modules/rampart-samples/policy/sample03/services.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/policy/sample03/services.xml?rev=613171&r1=613170&r2=613171&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/policy/sample03/services.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-samples/policy/sample03/services.xml Fri Jan 18 06:28:36 2008
@@ -15,7 +15,7 @@
  ! See the License for the specific language governing permissions and
  ! limitations under the License.
  !-->
-<!-- services.xml of sample-2 : Sign only-->
+<!-- services.xml of sample-03 : Sign and Encryption-->
 <service>
 	<operation name="echo">
 		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

Modified: webservices/rampart/trunk/java/modules/rampart-samples/policy/sample04/services.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/policy/sample04/services.xml?rev=613171&r1=613170&r2=613171&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/policy/sample04/services.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-samples/policy/sample04/services.xml Fri Jan 18 06:28:36 2008
@@ -15,7 +15,7 @@
  ! See the License for the specific language governing permissions and
  ! limitations under the License.
  !-->
-<!-- services.xml of sample-2 : Sign only-->
+<!-- services.xml of sample-04 : Secure Conversation -->
 <service>
 	<operation name="echo">
 		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

Added: webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/policy.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/policy.xml?rev=613171&view=auto
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/policy.xml (added)
+++ webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/policy.xml Fri Jan 18 06:28:36 2008
@@ -0,0 +1,88 @@
+<wsp:Policy wsu:Id="SgnOnlyAnonymous"
+		xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
+		xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+		xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
+		xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding>
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:RequireThumbprintReference/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:SupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:IssuedToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<Issuer xmlns="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+								<Address xmlns="http://www.w3.org/2005/08/addressing">http://not.yet.used.info/</Address>
+							</Issuer>
+							<sp:RequestSecurityTokenTemplate>
+								<t:TokenType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>
+								<t:KeyType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey</t:KeyType>
+								<t:KeySize xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">256</t:KeySize>
+							</sp:RequestSecurityTokenTemplate>
+							<wsp:Policy>
+								<sp:RequireInternalReference/>
+							</wsp:Policy>
+						</sp:IssuedToken>
+						<sp:SignedParts>
+							<sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
+						</sp:SignedParts>
+					</wsp:Policy>
+		     </sp:SupportingTokens>
+			<sp:SignedParts>
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:Wss11>
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+				<sp:RequireSignatureConfirmation/>
+				</wsp:Policy>
+			</sp:Wss11>
+			<sp:Trust10>
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>client</ramp:user>
+				<ramp:encryptionUser>service</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample05.PWCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">client.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+			</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
\ No newline at end of file

Propchange: webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/policy.xml
------------------------------------------------------------------------------
    svn:executable = *

Modified: webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/services.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/services.xml?rev=613171&r1=613170&r2=613171&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/services.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/services.xml Fri Jan 18 06:28:36 2008
@@ -16,12 +16,8 @@
  ! limitations under the License.
  !-->
 <!-- services.xml of sample-1 : UsernameToken-->
-<service>
-	<!--operation name="echo">
-		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
-	</operation>    
-	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.policy.sample01.SimpleService</parameter-->
-	
+<serviceGroup>
+<service name="STS">	
 	<module ref="rampart" />
 	<module ref="addressing" />
 	<module ref="rahas" />
@@ -131,4 +127,105 @@
 	</wsp:Policy>
 
 
-</service>
+</service>
+<service name="sample05">
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
+	</operation>    
+	<parameter name="ServiceClass" locked="false">org.apache.rampart.samples.policy.sample05.SimpleService</parameter>
+	
+	<module ref="rampart" />
+	<module ref="addressing" />
+	
+	<wsp:Policy wsu:Id="SgnOnlyAnonymous"
+		xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
+		xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+		xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
+		xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+	<wsp:ExactlyOne>
+		<wsp:All>
+			<sp:SymmetricBinding>
+				<wsp:Policy>
+					<sp:ProtectionToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:RequireThumbprintReference/>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:ProtectionToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:Basic256/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Lax/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:SymmetricBinding>
+			<sp:SupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+					<wsp:Policy>
+						<sp:IssuedToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+							<Issuer xmlns="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+								<Address xmlns="http://www.w3.org/2005/08/addressing">https://kirillgdev04/Security_Federation_SecurityTokenService_Indigo/Symmetric.svc/Scenario_1_IssuedTokenOverTransport_UsernameOverTransport</Address>
+							</Issuer>
+							<sp:RequestSecurityTokenTemplate>
+								<t:TokenType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>
+								<t:KeyType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">http://schemas.xmlsoap.org/ws/2005/02/trust/PublicKey</t:KeyType>
+								<t:KeySize xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">256</t:KeySize>
+							</sp:RequestSecurityTokenTemplate>
+							<wsp:Policy>
+								<sp:RequireInternalReference/>
+							</wsp:Policy>
+						</sp:IssuedToken>
+						<sp:SignedParts>
+							<sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
+						</sp:SignedParts>
+					</wsp:Policy>
+		     </sp:SupportingTokens>
+			<sp:SignedParts>
+				<sp:Body/>
+			</sp:SignedParts>
+			<sp:Wss11>
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+					<sp:MustSupportRefThumbprint/>
+					<sp:MustSupportRefEncryptedKey/>
+				<sp:RequireSignatureConfirmation/>
+				</wsp:Policy>
+			</sp:Wss11>
+			<sp:Trust10>
+				<wsp:Policy>
+					<sp:MustSupportIssuedTokens/>
+					<sp:RequireClientEntropy/>
+					<sp:RequireServerEntropy/>
+				</wsp:Policy>
+			</sp:Trust10>
+				<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+					<ramp:user>service</ramp:user>
+					<ramp:encryptionUser>client</ramp:encryptionUser>
+					<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample05.PWCBHandler</ramp:passwordCallbackClass>
+					
+					<ramp:signatureCrypto>
+						<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.file">service.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+						</ramp:crypto>
+					</ramp:signatureCrypto>
+		</ramp:RampartConfig>
+		</wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>
+	
+
+</service>
+</serviceGroup>

Modified: webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java?rev=613171&r1=613170&r2=613171&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java Fri Jan 18 06:28:36 2008
@@ -30,9 +30,13 @@
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.rahas.RahasConstants;
+import org.apache.rahas.Token;
+import org.apache.rahas.TokenStorage;
 import org.apache.rahas.TrustException;
 import org.apache.rahas.TrustUtil;
+import org.apache.rahas.client.STSClient;
 import org.apache.rampart.RampartMessageData;
+import org.apache.ws.secpolicy.Constants;
 import org.opensaml.XML;
 
 import javax.xml.namespace.QName;
@@ -47,21 +51,37 @@
 
 		ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(args[1], null);
 
-		ServiceClient client = new ServiceClient(ctx, null);
-		Options options = new Options();
+		
+		STSClient stsClient = new STSClient(ctx);
+		
+		stsClient.setRstTemplate(getRSTTemplate());
 		String action = TrustUtil.getActionValue(RahasConstants.VERSION_05_02, RahasConstants.RST_ACTION_ISSUE);
-		options.setAction(action);
-		options.setTo(new EndpointReference(args[0]));
-		options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  loadPolicy(args[2]));
-		client.setOptions(options);
-
-		client.engageModule("addressing");
-		client.engageModule("rampart");
-
-		OMElement response = client.sendReceive(getPayload());
-		OMElement saml = getSAMLToken(response);
+		stsClient.setAction(action);
+		
+		Token responseToken = stsClient.requestSecurityToken(loadPolicy("sample05/policy.xml"), "http://localhost:8090/axis2/services/STS", loadPolicy("sample05/sts_policy.xml"), null);
+		
+	        System.out.println("\n############################# Requested Token ###################################\n");
+	        System.out.println(responseToken.getToken().toString());
+		
+	        TokenStorage store = TrustUtil.getTokenStore(ctx);
+	        store.add(responseToken);
+		
 		
-		System.out.println(saml);
+	        ServiceClient client = new ServiceClient(ctx, null);
+		
+	        Options options = new Options();
+	        options.setAction("urn:echo");
+	        options.setTo(new EndpointReference(args[0]));
+	        options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,  loadPolicy("sample05/policy.xml"));
+	        options.setProperty(RampartMessageData.KEY_CUSTOM_ISSUED_TOKEN, responseToken.getId());
+	        client.setOptions(options);
+	        
+	        client.engageModule("addressing");
+                client.engageModule("rampart");
+                
+                OMElement response = client.sendReceive(getPayload("Hello world1"));
+                System.out.println("Response  : " + response);
+	        
 
 	}
 
@@ -78,18 +98,26 @@
         return elem;
     }
 
-	private static OMElement getPayload() throws TrustException{
-		OMElement rstElem = TrustUtil.createRequestSecurityTokenElement(RahasConstants.VERSION_05_02);
-		TrustUtil.createRequestTypeElement(RahasConstants.VERSION_05_02, rstElem, RahasConstants.REQ_TYPE_ISSUE);
-		OMElement tokenTypeElem = TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, rstElem);
-		tokenTypeElem.setText(RahasConstants.TOK_TYPE_SAML_10);
-
-		TrustUtil.createAppliesToElement(rstElem, "http://localhost:8080/axis2/services/SimpleService", AddressingConstants.Final.WSA_NAMESPACE);
-		TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02,
-				rstElem, RahasConstants.KEY_TYPE_PUBLIC_KEY);
-		TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, rstElem, 256);
-
-		return rstElem;
-	}
+	
+    private static OMElement getPayload(String value) {
+	OMFactory factory = OMAbstractFactory.getOMFactory();
+	OMNamespace ns = factory.createOMNamespace("http://sample05.policy.samples.rampart.apache.org","ns1");
+	OMElement elem = factory.createOMElement("echo", ns);
+	OMElement childElem = factory.createOMElement("param0", null);
+	childElem.setText(value);
+	elem.addChild(childElem);
+	        
+	return elem;
+	
+    }
+	
+    private static OMElement getRSTTemplate() throws Exception {
+	OMFactory fac = OMAbstractFactory.getOMFactory();
+	OMElement elem = fac.createOMElement(Constants.RST_TEMPLATE);
+	TrustUtil.createTokenTypeElement(RahasConstants.VERSION_05_02, elem).setText(RahasConstants.TOK_TYPE_SAML_10);
+	TrustUtil.createKeyTypeElement(RahasConstants.VERSION_05_02, elem, RahasConstants.KEY_TYPE_PUBLIC_KEY);
+	TrustUtil.createKeySizeElement(RahasConstants.VERSION_05_02, elem, 256);
+	return elem;
+    }  
 
 }

Added: webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/sts_policy.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/sts_policy.xml?rev=613171&view=auto
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/sts_policy.xml (added)
+++ webservices/rampart/trunk/java/modules/rampart-samples/policy/sample05/sts_policy.xml Fri Jan 18 06:28:36 2008
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ !
+ ! Copyright 2006 The Apache Software Foundation.
+ !
+ ! Licensed under the Apache License, Version 2.0 (the "License");
+ ! you may not use this file except in compliance with the License.
+ ! You may obtain a copy of the License at
+ !
+ !      http://www.apache.org/licenses/LICENSE-2.0
+ !
+ ! Unless required by applicable law or agreed to in writing, software
+ ! distributed under the License is distributed on an "AS IS" BASIS,
+ ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ! See the License for the specific language governing permissions and
+ ! limitations under the License.
+ !-->
+<wsp:Policy wsu:Id="SigOnly" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+	<wsp:ExactlyOne>
+	  <wsp:All>
+			<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:InitiatorToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:InitiatorToken>
+					<sp:RecipientToken>
+						<wsp:Policy>
+							<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
+								<wsp:Policy>
+									<sp:WssX509V3Token10/>
+								</wsp:Policy>
+							</sp:X509Token>
+						</wsp:Policy>
+					</sp:RecipientToken>
+					<sp:AlgorithmSuite>
+						<wsp:Policy>
+							<sp:TripleDesRsa15/>
+						</wsp:Policy>
+					</sp:AlgorithmSuite>
+					<sp:Layout>
+						<wsp:Policy>
+							<sp:Strict/>
+						</wsp:Policy>
+					</sp:Layout>
+					<sp:IncludeTimestamp/>
+					<sp:OnlySignEntireHeadersAndBody/>
+				</wsp:Policy>
+			</sp:AsymmetricBinding>
+			<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<wsp:Policy>
+					<sp:MustSupportRefKeyIdentifier/>
+					<sp:MustSupportRefIssuerSerial/>
+				</wsp:Policy>
+			</sp:Wss10>
+			<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+				<sp:Body/>
+			</sp:SignedParts>
+
+			<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> 
+				<ramp:user>client</ramp:user>
+				<ramp:encryptionUser>service</ramp:encryptionUser>
+				<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample05.PWCBHandler</ramp:passwordCallbackClass>
+				
+				<ramp:signatureCrypto>
+					<ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.file">client.jks</ramp:property>
+						<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">apache</ramp:property>
+					</ramp:crypto>
+				</ramp:signatureCrypto>
+			</ramp:RampartConfig>
+		
+	  </wsp:All>
+	</wsp:ExactlyOne>
+</wsp:Policy>