You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sv...@apache.org on 2008/01/28 18:31:12 UTC

svn commit: r615963 - in /incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main: java/calculator/ java/calculator/security/ resources/

Author: svkrish
Date: Mon Jan 28 09:31:02 2008
New Revision: 615963

URL: http://svn.apache.org/viewvc?rev=615963&view=rev
Log:
adding a service with support for integrity

Added:
    incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/calculatorKeys.jks   (with props)
    incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/security.properties
Modified:
    incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/SubtractService.java
    incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ClientPWCBHandler.java
    incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ServerPWCBHandler.java
    incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/Calculator.composite
    incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/definitions.xml

Modified: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/SubtractService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/SubtractService.java?rev=615963&r1=615962&r2=615963&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/SubtractService.java (original)
+++ incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/SubtractService.java Mon Jan 28 09:31:02 2008
@@ -18,9 +18,12 @@
  */
 package calculator;
 
+import org.osoa.sca.annotations.Remotable;
+
 /**
  * The interface for the subtract service
  */
+@Remotable
 public interface SubtractService {
 
     double subtract(double n1, double n2);

Modified: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ClientPWCBHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ClientPWCBHandler.java?rev=615963&r1=615962&r2=615963&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ClientPWCBHandler.java (original)
+++ incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ClientPWCBHandler.java Mon Jan 28 09:31:02 2008
@@ -37,8 +37,21 @@
         	System.out.println("*** Calling Client UserId/Password Handler .... ");
             WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
             System.out.println("User Id = " + pwcb.getIdentifer());
-            pwcb.setPassword("CalculatorUserPasswd");
             System.out.println("Set Password = " + pwcb.getPassword());
+            System.out.println("Usage = " + pwcb.getUsage());
+            if ( pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN ) {
+                if ( pwcb.getIdentifer().equals("CalculatorUser")){
+                    pwcb.setPassword("CalculatorUserPasswd");
+                } else {
+                    throw new UnsupportedCallbackException(pwcb, "Authentication Failed : UserId - Password mismatch");
+                }
+            } else if ( pwcb.getUsage() == WSPasswordCallback.SIGNATURE ) {
+                if ( pwcb.getIdentifer().equals("CalculatorUser")) {
+                    pwcb.setPassword("CalculatorUserPasswd");
+                } else {
+                    pwcb.setPassword("CalculatorAdmin");
+                }
+            }
         }
     }
 

Modified: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ServerPWCBHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ServerPWCBHandler.java?rev=615963&r1=615962&r2=615963&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ServerPWCBHandler.java (original)
+++ incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/java/calculator/security/ServerPWCBHandler.java Mon Jan 28 09:31:02 2008
@@ -38,8 +38,8 @@
             WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
             System.out.println("User Id = " + pwcb.getIdentifer());
             System.out.println("Password = " + pwcb.getPassword());
-            
-            if ( pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN ) {
+            System.out.println("Usage = " + pwcb.getUsage());
+            if ( pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN ) {
                 if ( pwcb.getIdentifer().equals("CalculatorUser") &&
                         pwcb.getPassword().equals("CalculatorUserPasswd") ){
                             return;
@@ -47,7 +47,11 @@
                     throw new UnsupportedCallbackException(pwcb, "Authentication Failed : UserId - Password mismatch");
                 }
             } else if ( pwcb.getUsage() == WSPasswordCallback.SIGNATURE ) {
-                pwcb.setPassword("CalculatorUserPasswd");
+                if ( pwcb.getIdentifer().equals("CalculatorUser")) {
+                    pwcb.setPassword("CalculatorUserPasswd");
+                } else {
+                    pwcb.setPassword("CalculatorAdmin");
+                }
             }
         }
     }

Modified: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/Calculator.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/Calculator.composite?rev=615963&r1=615962&r2=615963&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/Calculator.composite (original)
+++ incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/Calculator.composite Mon Jan 28 09:31:02 2008
@@ -30,7 +30,11 @@
             <binding.ws uri="http://localhost:8080/sample-calculator-ws-secure-webapp/AddServiceComponent"
             			requires="calc:wsAuthentication" />        
         </reference>   
-        <reference name="subtractService" target="SubtractServiceComponent"></reference>
+        <reference name="subtractService">
+        	<interface.java interface="calculator.SubtractService" />        
+            <binding.ws uri="http://localhost:8080/sample-calculator-ws-secure-webapp/SubtractServiceComponent"
+            			requires="calc:wsIntegrity" />
+        </reference>
         <reference name="multiplyService" target="MultiplyServiceComponent"></reference>
         <reference name="divideService" target="DivideServiceComponent"></reference>
     </component>
@@ -45,6 +49,10 @@
 
     <component name="SubtractServiceComponent">
         <implementation.java class="calculator.SubtractServiceImpl"/>
+        <service name="SubtractService">
+             <interface.java interface="calculator.SubtractService" />  
+             <binding.ws requires="integrity"/>
+        </service>
     </component>
 
     <component name="MultiplyServiceComponent">

Added: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/calculatorKeys.jks
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/calculatorKeys.jks?rev=615963&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/calculatorKeys.jks
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/definitions.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/definitions.xml?rev=615963&r1=615962&r2=615963&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/definitions.xml (original)
+++ incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/definitions.xml Mon Jan 28 09:31:02 2008
@@ -53,6 +53,13 @@
  			 </description>
  </sca:intent>
  
+ <sca:intent name="calc:wsIntegrity" 
+ 			 constrains="sca:binding.ws">
+ 			 <description>
+ 			 	Protect messages from unauthorized reading or modification
+ 			 </description>
+ </sca:intent>
+ 
  <!-- WS Security POLICY SETS -->
   <sca:policySet name="calc:wsAuthenticationPolicy"
  	provides="authentication"
@@ -81,6 +88,192 @@
                </action>
     	</parameter>
  	</tuscany:wsConfigParam>
+ </sca:policySet>
+ 
+ <!-- sca:policySet name="wsIntegrityPolicy"
+ 	provides="integrity"
+ 	appliesTo="sca:binding.ws">
+ 	<tuscany:wsConfigParam>
+ 		<parameter name="InflowSecurity">
+		    <action>
+		        <items>UsernameToken Timestamp Signature</items>
+		        <signaturePropFile>security.properties</signaturePropFile>
+		        <passwordCallbackClass>calculator.security.ServerPWCBHandler</passwordCallbackClass>
+		    </action>
+		</parameter>
+ 		<parameter name="OutflowSecurity">
+      		<action>
+        		<items>Timestamp Signature</items>
+        		<user>CalculatorAdmin</user>
+        		<signaturePropFile>security.properties</signaturePropFile>
+        		<passwordCallbackClass>calculator.security.ServerPWCBHandler</passwordCallbackClass>
+        		<signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+      		</action>
+    	</parameter>
+ 	</tuscany:wsConfigParam>
+ </sca:policySet>
+ 
+ <sca:policySet name="wsClientIntegrityPolicy"
+ 	provides="calc:wsIntegrity"
+ 	appliesTo="sca:binding.ws">
+ 	<tuscany:wsConfigParam>
+ 		<parameter name="InflowSecurity">
+		    <action>
+		        <items>Timestamp Signature</items>
+		        <signaturePropFile>security.properties</signaturePropFile>
+		    </action>
+		</parameter>
+ 		<parameter name="OutflowSecurity">
+      		<action>
+        		<items>UsernameToken Timestamp Signature</items>
+        		<user>CalculatorUser</user>
+        		<passwordType>PasswordText</passwordType>
+        		<signaturePropFile>security.properties</signaturePropFile>
+        		<passwordCallbackClass>calculator.security.ClientPWCBHandler</passwordCallbackClass>
+        		<signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
+      		</action>
+    	</parameter>
+ 	</tuscany:wsConfigParam>
+ </sca:policySet-->
+ 
+ <sca:policySet name="tuscany:wsSecurityPolicyForIntegrity"
+ 	provides="sca:integrity"
+ 	appliesTo="sca:binding.ws">
+ 	<wsp:Policy wsu:Id="SignOnly" 
+ 		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>CalculatorAdmin</ramp:user>
+					<ramp:encryptionUser>CalculatorAdmin</ramp:encryptionUser>
+					<ramp:passwordCallbackClass>calculator.security.ServerPWCBHandler</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">calculatorKeys.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">CalculatorAdmin</ramp:property>
+						</ramp:crypto>
+					</ramp:signatureCrypto>
+				</ramp:RampartConfig>
+			</wsp:All>
+		</wsp:ExactlyOne>
+	</wsp:Policy>
+ </sca:policySet>
+ 
+ <sca:policySet name="tuscany:wsSecurityPolicyForClientIntegrity"
+ 	provides="calc:wsIntegrity"
+ 	appliesTo="sca:binding.ws">
+ 	<wsp:Policy wsu:Id="SignOnly" 
+ 		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>CalculatorAdmin</ramp:user>
+					<ramp:encryptionUser>CalculatorAdmin</ramp:encryptionUser>
+					<ramp:passwordCallbackClass>calculator.security.ClientPWCBHandler</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">calculatorKeys.jks</ramp:property>
+							<ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">CalculatorAdmin</ramp:property>
+						</ramp:crypto>
+					</ramp:signatureCrypto>
+				</ramp:RampartConfig>
+			</wsp:All>
+		</wsp:ExactlyOne>
+	</wsp:Policy>
  </sca:policySet>
  
  </sca:definitions>

Added: incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/security.properties
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/security.properties?rev=615963&view=auto
==============================================================================
--- incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/security.properties (added)
+++ incubator/tuscany/java/sca/samples/calculator-ws-secure-webapp/src/main/resources/security.properties Mon Jan 28 09:31:02 2008
@@ -0,0 +1,4 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=CalculatorAdmin
+org.apache.ws.security.crypto.merlin.file=calculatorKeys.jks
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org