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>