Thanks Ruchith,

For some reason my classpath must have been messed up, as a reboot has fixed 
the problem! The last thing I tried!.

Thanks
George   

-----Original Message-----
From: Ruchith Fernando [mailto:[EMAIL PROTECTED] 
Sent: 23 January 2007 17:13
To: George Cowe
Cc: [email protected]
Subject: Re: Unrecognized Callback

Hi George,

Can this issue be due to a case where somehow, the classloader of the callback 
instance passed into the callback handler is different from the classloader 
that loaded the callback handler?

Thanks,
Ruchith

On 1/19/07, George Cowe <[EMAIL PROTECTED]> wrote:
> Hi
>
> I am using WSS4J 1.5.1 with Axis 1.3 and having a problem signing a response 
> from a web service.
> The axis client successfully signs a SOAP message and sends it to server side 
> axis service which successfully verifies it. The axis service then attempts 
> to sign the response and gets the following error.
>
> WSHandler: password callback failed; nested exception is:
>         javax.security.auth.callback.UnsupportedCallbackException: 
> Unrecognized Callback; nested exception is:
>         org.apache.ws.security.WSSecurityException: WSHandler: password 
> callback failed; nested exception is:
>         javax.security.auth.callback.UnsupportedCallbackException: 
> Unrecognized Callback
>
> I'm using the same keystore and same private key to sign message on both 
> client and server side.
> Callback program is very simple and used on both client and server side. 
> Works ok on client side, but throws the Unrecognized Callback exception on 
> server side.
>
> 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];
>           pc.setPassword("george");
>       } else {
>         throw new UnsupportedCallbackException(
>           callbacks[i], "Unrecognized Callback");
>       }
>     }
>
> The same crypto properties file is used on client and server :-
>
> org.apache.ws.security.crypto.provider=org.apache.ws.security.componen
> ts.crypto.Merlin
> org.apache.ws.security.crypto.merlin.keystore.type=pkcs12
> org.apache.ws.security.crypto.merlin.keystore.password=george
> org.apache.ws.security.crypto.merlin.keystore.alias=55ce69717372baf27f
> 2862857a9dd2db_50e417e0-e461-474b-96e2-077b80325612
> org.apache.ws.security.crypto.merlin.alias.password=george
> org.apache.ws.security.crypto.merlin.file=george-origo.pfx
>
> The server wsdd looks like this :-
>
> <deployment name="CEBondSingleContractSecureHandlerService" 
> xmlns="http://xml.apache.org/axis/wsdd/";
>             xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";
>             xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance";>
>         <handler name="DoSecurityReceiver" 
> type="java:org.apache.ws.axis.security.WSDoAllReceiver" >
>                 <parameter name="action" value="Signature"/>
>                 <parameter name="signaturePropFile" 
> value="crypto.properties"/>
>                 <parameter name="signatureKeyIdentifier" 
> value="DirectReference"/>
>                 <parameter name="user" 
> value="55ce69717372baf27f2862857a9dd2db_50e417e0-e461-474b-96e2-077b80325612"/>
>                 <parameter name="passwordCallbackClass" 
> value="com.origoservices.keystore.util.PasswordProvider" />
>                 <parameter name="mustUnderstand" value="0" />
>         </handler>
>         <handler name="DoSecuritySender" 
> type="java:org.apache.ws.axis.security.WSDoAllSender" >
>                 <parameter name="action" value="Signature"/>
>                 <parameter name="signaturePropFile" 
> value="crypto.properties"/>
>                 <parameter name="signatureKeyIdentifier" 
> value="DirectReference"/>
>                 <parameter name="user" 
> value="55ce69717372baf27f2862857a9dd2db_50e417e0-e461-474b-96e2-077b80325612"/>
>                 <parameter name="passwordCallbackClass" 
> value="com.origoservices.keystore.util.PasswordProvider" />
>                 <parameter name="mustUnderstand" value="0" />
>         </handler>
>         <service name="CEBondSingleContractSecureHandlerService" 
> style="message">
>         <requestFlow>
>            <handler type="DoSecurityReceiver"/>
>         </requestFlow>
>         <responseFlow>
>            <handler type="DoSecuritySender"/>
>         </responseFlow>
>         <parameter name="allowedMethods" value="*"/>
>         <parameter name="className" 
> value="com.origoservices.secure.ws.MsgProcessor"/>
> </service>
> </deployment>
>
> The axis client is using jdk 1.5 for the java runtime, the server side is 
> Tomcat 5.0.28 which too is using the same jdk for its java runtime.
>
> Can anyone explain why an exception occurs in the passwordCallbackClass on 
> server side?
>
> Any help much appreciated.
>
> Thanks
> George
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
www.ruchith.org
www.wso2.org

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to