You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ru...@apache.org on 2005/09/16 10:45:03 UTC

svn commit: r289434 - in /webservices/axis2/trunk/java/modules/samples: ./ resources/security/ src/sample/security/ src/sample/security/META-INF/

Author: ruchithf
Date: Fri Sep 16 01:44:49 2005
New Revision: 289434

URL: http://svn.apache.org/viewcvs?rev=289434&view=rev
Log:
addressing.mar and security.mar added to the axis2.war and checkin in stuff for the security sample

Added:
    webservices/axis2/trunk/java/modules/samples/resources/security/
    webservices/axis2/trunk/java/modules/samples/resources/security/client.axis2.xml
    webservices/axis2/trunk/java/modules/samples/resources/security/sec.jks   (with props)
    webservices/axis2/trunk/java/modules/samples/resources/security/sec.properties
    webservices/axis2/trunk/java/modules/samples/resources/security/service.axis2.xml
    webservices/axis2/trunk/java/modules/samples/src/sample/security/
    webservices/axis2/trunk/java/modules/samples/src/sample/security/Client.java
    webservices/axis2/trunk/java/modules/samples/src/sample/security/META-INF/
    webservices/axis2/trunk/java/modules/samples/src/sample/security/META-INF/services.xml
    webservices/axis2/trunk/java/modules/samples/src/sample/security/PWCallback.java
    webservices/axis2/trunk/java/modules/samples/src/sample/security/Service.java
Modified:
    webservices/axis2/trunk/java/modules/samples/maven.xml
    webservices/axis2/trunk/java/modules/samples/project.xml

Modified: webservices/axis2/trunk/java/modules/samples/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/maven.xml?rev=289434&r1=289433&r2=289434&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/samples/maven.xml Fri Sep 16 01:44:49 2005
@@ -37,6 +37,7 @@
         <attainGoal name="version"/>
         <attainGoal name="mtomSample"/>
         <attainGoal name="groovy"/>
+        <attainGoal name="securitySample"/>
     </goal>
 
     <!-- ================================================================ -->
@@ -237,6 +238,46 @@
             <fileset dir="target/classes/sample/groovy">
             </fileset>
         </jar>
+    </goal>
+
+    <!-- ================================================================ -->
+    <!--- Security Sample -->
+    <!-- ================================================================ -->
+    <goal name="securitySample">
+
+	<mkdir dir="target/security"/>
+	<mkdir dir="target/security/META-INF"/>
+	
+        <!-- Create the service archive -->
+    	<ant:move todir="target/security">
+	     <ant:fileset dir="target/classes">
+                <ant:include name="sample/security/*.class"/>
+            </ant:fileset>
+	</ant:move>
+	<ant:copy file="src/sample/security/META-INF/services.xml" tofile="target/security/META-INF/services.xml"/>
+        <jar destfile="target/security/SecureService.aar">
+            <fileset dir="target/security"></fileset>
+        </jar>
+        
+	<!-- Create a jar to hold the password callback class-->
+	<mkdir dir="target/security/secUtil/sample/security/" />
+	<ant:copy file="target/security/sample/security/PWCallback.class" toFile="target/security/secUtil/sample/security/PWCallback.class" />
+	<ant:copy file="resources/security/sec.jks" tofile="target/security/secUtil/sec.jks"/>
+	<ant:copy file="resources/security/sec.properties" tofile="target/security/secUtil/sec.properties"/>
+        <jar destfile="target/security/secUtil.jar">
+            <fileset dir="target/security/secUtil"></fileset>
+        </jar>
+
+	<!-- Create the client repository -->
+	<mkdir dir="target/security/client_repo"/>
+	<mkdir dir="target/security/client_repo/modules"/>
+	<ant:copy file="../security/target/modules/security.mar" tofile="target/security/client_repo/modules/security.mar"/>
+	<ant:copy file="../addressing/target/modules/addressing.mar" tofile="target/security/client_repo/modules/addressing.mar"/>
+	<ant:copy file="resources/security/client.axis2.xml" tofile="target/security/client_repo/axis2.xml"/>
+
+	<ant:copy file="../security/target/modules/security.mar" tofile="target/toWar/modules/security.mar"/>
+	<ant:copy file="../addressing/target/modules/addressing.mar" tofile="target/toWar/modules/addressing.mar"/>
+
     </goal>
 
     <preGoal name="itest:compile">

Modified: webservices/axis2/trunk/java/modules/samples/project.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/project.xml?rev=289434&r1=289433&r2=289434&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/project.xml (original)
+++ webservices/axis2/trunk/java/modules/samples/project.xml Fri Sep 16 01:44:49 2005
@@ -57,7 +57,11 @@
             <artifactId>axis2-common</artifactId>
             <version>${pom.currentVersion}</version>
         </dependency>
-        
+        <dependency>
+            <groupId>axis2</groupId>
+            <artifactId>axis2-security</artifactId>
+            <version>${pom.currentVersion}</version>
+        </dependency> 
 
         <!-- external JARs -->
         <dependency>
@@ -156,7 +160,70 @@
                 <module>true</module>
             </properties>
         </dependency>
-
+        <dependency>
+            <groupId>wss4j</groupId>
+            <artifactId>wss4j</artifactId>
+            <version>SNAPSHOT</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xml-security</groupId>
+            <artifactId>xmlsec</artifactId>
+            <version>1.2.1</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>bouncycastle</groupId>
+            <artifactId>bcprov</artifactId>
+            <version>jdk13-128</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>opensaml</groupId>
+            <artifactId>opensaml</artifactId>
+            <version>1.0.1</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xmlParserAPIs</artifactId>
+            <version>2.6.2</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xmlParserAPIs</artifactId>
+            <version>2.6.2</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>xalan</groupId>
+            <artifactId>xalan</artifactId>
+            <version>2.6.0</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
+        <dependency>
+            <groupId>jaxen</groupId>
+            <artifactId>jaxen</artifactId>
+            <version>1.1-beta-7</version>
+            <properties>
+                <module>true</module>
+            </properties>
+        </dependency>
     </dependencies>
 
     <!-- build information for the project -->

Added: webservices/axis2/trunk/java/modules/samples/resources/security/client.axis2.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/resources/security/client.axis2.xml?rev=289434&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/resources/security/client.axis2.xml (added)
+++ webservices/axis2/trunk/java/modules/samples/resources/security/client.axis2.xml Fri Sep 16 01:44:49 2005
@@ -0,0 +1,72 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <module ref="addressing"/>
+
+    <!-- Engage the security module -->
+    <module ref="security"/>
+
+    <!-- This is only till we get the service specific parameters fixed in service.xml -->
+    <!-- Also we can switch back to hte normal parameter names when we can seperately assign them to the flows -->
+
+    <!-- Test with addressing and MTOM: Client's Configuration:START-->
+
+    <parameter name="OutAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="user" locked="false">alice</parameter>
+    <parameter name="OutPasswordCallbackClass" locked="false">org.apache.axis2.security.PWCallback</parameter>
+    <parameter name="OutSignaturePropFile" locked="false">interop.properties</parameter>
+    <parameter name="OutSignatureKeyIdentifier" locked="false">SKIKeyIdentifier</parameter>
+    <parameter name="encryptionKeyIdentifier" locked="false">SKIKeyIdentifier</parameter>
+    <parameter name="encryptionUser" locked="false">bob</parameter>
+    <parameter name="encryptionSymAlgorithm" locked="false">http://www.w3.org/2001/04/xmlenc#aes128-cbc</parameter>
+    <parameter name="OutSignatureParts" locked="false">{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}To;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}ReplyTo;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}MessageID;{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp</parameter>
+
+
+    <parameter name="optimizeParts" locked="false">//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</parameter>
+
+    <parameter name="InAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="InPasswordCallbackClass" locked="false">org.apache.axis2.security.PWCallback</parameter>
+    <parameter name="InSignaturePropFile" locked="false">interop.properties</parameter>
+
+    <parameter name="InSignaturePropFile" locked="false">interop.properties</parameter>
+
+    <!-- Test with addressing and MTOM: Client's Configuration:END-->
+
+
+    <transportReceiver name="http">
+    </transportReceiver>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+
+
+    
+    <phaseOrder type="inflow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch"/>
+        <phase name="PostDispatch"/>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="outflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--        This is temporray solution will be change soon-->
+        <phase name="security"/>
+    </phaseOrder>
+    <phaseOrder type="INfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="Outfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+</axisconfig>
+

Added: webservices/axis2/trunk/java/modules/samples/resources/security/sec.jks
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/resources/security/sec.jks?rev=289434&view=auto
==============================================================================
Binary file - no diff available.

Propchange: webservices/axis2/trunk/java/modules/samples/resources/security/sec.jks
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: webservices/axis2/trunk/java/modules/samples/resources/security/sec.properties
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/resources/security/sec.properties?rev=289434&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/resources/security/sec.properties (added)
+++ webservices/axis2/trunk/java/modules/samples/resources/security/sec.properties Fri Sep 16 01:44:49 2005
@@ -0,0 +1,5 @@
+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=password
+org.apache.ws.security.crypto.merlin.file=sec.jks
+

Added: webservices/axis2/trunk/java/modules/samples/resources/security/service.axis2.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/resources/security/service.axis2.xml?rev=289434&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/resources/security/service.axis2.xml (added)
+++ webservices/axis2/trunk/java/modules/samples/resources/security/service.axis2.xml Fri Sep 16 01:44:49 2005
@@ -0,0 +1,82 @@
+<axisconfig name="AxisJava2.0">
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">true</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- Engage the addressing module -->
+    <module ref="addressing"/>
+
+    <!-- Engage the security module -->
+    <module ref="security"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.0</parameter>
+    </transportSender>
+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    
+    <phaseOrder type="inflow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch"/>
+        <phase name="PostDispatch"/>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="outflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+        <!--        This is temporray solution will be change soon-->
+        <phase name="security"/>
+    </phaseOrder>
+    <phaseOrder type="INfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="Outfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+</axisconfig>
+

Added: webservices/axis2/trunk/java/modules/samples/src/sample/security/Client.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/src/sample/security/Client.java?rev=289434&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/src/sample/security/Client.java (added)
+++ webservices/axis2/trunk/java/modules/samples/src/sample/security/Client.java Fri Sep 16 01:44:49 2005
@@ -0,0 +1,66 @@
+package sample.security;
+
+import java.io.StringWriter;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.clientapi.Call;
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMFactory;
+import org.apache.axis2.om.OMNamespace;
+
+public class Client {
+
+	/**
+	 * @param args
+	 */
+	private static EndpointReference targetEPR = new EndpointReference(
+			"http://127.0.0.1:8080/axis2/services/SecureService/echo");
+
+	public static void main(String[] args) {
+		try {
+			
+			//TODO : Get the repository location from the args
+			
+			
+			OMElement payload = getEchoElement();
+			Call call = new Call();
+			call.setTo(targetEPR);
+			call.setTransportInfo(Constants.TRANSPORT_HTTP,
+					Constants.TRANSPORT_HTTP, false);
+
+			//Blocking invocation
+			OMElement result = call.invokeBlocking("echo", payload);
+
+			StringWriter writer = new StringWriter();
+			result.serializeWithCache(XMLOutputFactory.newInstance()
+					.createXMLStreamWriter(writer));
+			writer.flush();
+
+			System.out.println(writer.toString());
+
+		} catch (AxisFault axisFault) {
+			axisFault.printStackTrace();
+		} catch (XMLStreamException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private static OMElement getEchoElement() {
+        OMFactory fac = OMAbstractFactory.getOMFactory();
+        OMNamespace omNs = fac.createOMNamespace(
+                "http://example1.org/example1", "example1");
+        OMElement method = fac.createOMElement("echo", omNs);
+        OMElement value = fac.createOMElement("Text", omNs);
+        value.addChild(fac.createText(value, "Axis2 Echo String "));
+        method.addChild(value);
+
+        return method;
+	}
+
+}

Added: webservices/axis2/trunk/java/modules/samples/src/sample/security/META-INF/services.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/src/sample/security/META-INF/services.xml?rev=289434&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/src/sample/security/META-INF/services.xml (added)
+++ webservices/axis2/trunk/java/modules/samples/src/sample/security/META-INF/services.xml Fri Sep 16 01:44:49 2005
@@ -0,0 +1,24 @@
+<service name="SecureService">
+	<parameter locked="false" name="ServiceClass">security.Service</parameter>
+	<operation name="echo">
+		<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+	</operation>    
+
+    <parameter name="InAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="InPasswordCallbackClass" locked="false">security.PWCallback</parameter>
+    <parameter name="InSignaturePropFile" locked="false">sec.properties</parameter>
+
+    <parameter name="OutAction" locked="false">Timestamp Signature Encrypt</parameter>
+    <parameter name="user" locked="false">bob</parameter>
+    <parameter name="OutPasswordCallbackClass" locked="false">org.apache.axis2.security.PWCallback</parameter>
+    <parameter name="OutSignaturePropFile" locked="false">interop.properties</parameter>
+    <parameter name="OutSignatureKeyIdentifier" locked="false">SKIKeyIdentifier</parameter>
+    <parameter name="encryptionKeyIdentifier" locked="false">SKIKeyIdentifier</parameter>
+    <parameter name="encryptionUser" locked="false">alice</parameter>
+    <parameter name="encryptionSymAlgorithm" locked="false">http://www.w3.org/2001/04/xmlenc#aes128-cbc</parameter>
+    <parameter name="OutSignatureParts" locked="false">{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}To;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}ReplyTo;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}From;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}RelatesTo;{Element}{http://schemas.xmlsoap.org/ws/2004/08/addressing}MessageID;{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp</parameter>
+
+    <parameter name="optimizeParts" locked="false">//xenc:EncryptedData/xenc:CipherData/xenc:CipherValue</parameter>
+
+
+</service>

Added: webservices/axis2/trunk/java/modules/samples/src/sample/security/PWCallback.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/src/sample/security/PWCallback.java?rev=289434&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/src/sample/security/PWCallback.java (added)
+++ webservices/axis2/trunk/java/modules/samples/src/sample/security/PWCallback.java Fri Sep 16 01:44:49 2005
@@ -0,0 +1,189 @@
+/*
+* Copyright 2004,2005 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.
+*/
+package sample.security;
+
+
+import org.apache.ws.security.WSPasswordCallback;
+
+
+
+import javax.security.auth.callback.Callback;
+
+import javax.security.auth.callback.CallbackHandler;
+
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import java.io.IOException;
+
+
+
+/**
+
+ * Class PWCallback
+
+ */
+
+public class PWCallback implements CallbackHandler {
+
+
+
+    /** Field key */
+
+    private static final byte[] key = {
+
+        (byte) 0x31, (byte) 0xfd, (byte) 0xcb, (byte) 0xda, (byte) 0xfb,
+
+        (byte) 0xcd, (byte) 0x6b, (byte) 0xa8, (byte) 0xe6, (byte) 0x19,
+
+        (byte) 0xa7, (byte) 0xbf, (byte) 0x51, (byte) 0xf7, (byte) 0xc7,
+
+        (byte) 0x3e, (byte) 0x80, (byte) 0xae, (byte) 0x98, (byte) 0x51,
+
+        (byte) 0xc8, (byte) 0x51, (byte) 0x34, (byte) 0x04,
+
+    };
+
+
+
+    /*
+
+     * (non-Javadoc)
+
+     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
+
+     */
+
+
+
+    /**
+
+     * Method handle
+
+     * 
+
+     * @param callbacks 
+
+     * @throws java.io.IOException                  
+
+     * @throws javax.security.auth.callback.UnsupportedCallbackException 
+
+     */
+
+    public void handle(Callback[] callbacks)
+
+            throws IOException, UnsupportedCallbackException {
+
+
+
+        for (int i = 0; i < callbacks.length; i++) {
+
+            if (callbacks[i] instanceof WSPasswordCallback) {
+
+                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
+
+
+
+                /*
+
+                 * This usage type is used only in case we received a
+
+                 * username token with a password of type PasswordText or
+
+                 * an unknown password type.
+
+                 * 
+
+                 * This case the WSPasswordCallback object contains the
+
+                 * identifier (aka username), the password we received, and
+
+                 * the password type string to identify the type.
+
+                 * 
+
+                 * Here we perform only a very simple check.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+
+                	if(pc.getIdentifer().equals("Ron") && pc.getPassword().equals("noR")) {
+
+                        return;
+
+                	}
+
+                    if (pc.getPassword().equals("sirhC")) {
+
+                        return;
+
+                    }               	
+
+                    throw new UnsupportedCallbackException(callbacks[i],
+
+                    "check failed");
+
+                }
+
+                /*
+
+                 * here call a function/method to lookup the password for
+
+                 * the given identifier (e.g. a user name or keystore alias)
+
+                 * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
+
+                 * for Testing we supply a fixed name here.
+
+                 */
+
+                if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
+
+                    pc.setKey(key);
+
+                } else if(pc.getIdentifer().equals("alice")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("bob")) {
+
+                    pc.setPassword("password");
+
+                } else if(pc.getIdentifer().equals("Ron")) {
+
+                    pc.setPassword("noR");
+
+                } else {
+
+                    pc.setPassword("sirhC");
+
+                }
+
+            } else {
+
+                throw new UnsupportedCallbackException(callbacks[i],
+
+                        "Unrecognized Callback");
+
+            }
+
+        }
+
+    }
+
+}
+
+

Added: webservices/axis2/trunk/java/modules/samples/src/sample/security/Service.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/samples/src/sample/security/Service.java?rev=289434&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/samples/src/sample/security/Service.java (added)
+++ webservices/axis2/trunk/java/modules/samples/src/sample/security/Service.java Fri Sep 16 01:44:49 2005
@@ -0,0 +1,13 @@
+package sample.security;
+
+import org.apache.axis2.om.OMElement;
+
+public class Service {
+
+	public OMElement echo(OMElement elem) {
+		elem.build();
+		elem.detach();
+		return elem;
+	}
+	
+}