Bonjour,
mon problème est lié à la communication des application clientes avec la Mutualisation (serveur: provider du service)
et le problème est du à l'ajout de partie securité (basé sur WSS4J ) que j'ai implementé pour la comunication entre applications
cette partie de securité a été testé sous le serveur jetty et c'est OK dans ce serveur.
par contre quand je veux la tester sous Websphere j'ai le problème suivant :
problème d'accès au service mutualisé :
requested URL :http://10.96.120.175:16001/Mutualisa...timeException:
Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault:
The namespace URI "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" has not been bound to a prefix.
sachant qu'on ne fait jamais un appel explicite a cet URI pour pouvoir y agir.
et pour la methode d'authentification utilisée dans WSS4J est usernameToken authentication,
que j'utilise du coté client de cette facon :
public Object getSertvicePortType(String serviceUrl, Class implService) throws FunctionalException {
Object servicePortType = null;
Service serviceModel =
new AnnotationServiceFactory(
new Jsr181WebAnnotations(),
XFireFactory.newInstance().getXFire().getTransportManager(),
new AegisBindingProvider(new JaxbTypeRegistry())).create(implService);
try {
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
servicePortType = (Object) factory.create(serviceModel, serviceUrl);
addOutputHandler(servicePortType);
} catch (MalformedURLException e) {
throw new FunctionalException(getClass(),"getSertvicePortType","problem");
}
return servicePortType;
}
/*
* Ajoute un handler dans l'entête du message à envoyer
* @param servicePortType point d'entrée du service web.
*/
private void addOutputHandler (Object servicePortType) {
Client client = ((XFireProxy) Proxy.getInvocationHandler(servicePortType)).getClient();
client.addOutHandler(new DOMOutHandler());
Properties properties = new Properties();
configureOutProperties(properties);
client.addOutHandler(new WSS4JOutHandler(properties));
}
/*
* Configure le handler en positionnant les paramétres :
* - ACTION : action à appliquer sur le message
* - PASSWORD_TYPE : type de password
* - USER : le login d'accès
* - PW_CALLBACK_CLASS : class du handler du mot de passe
*
*/
private void configureOutProperties(Properties properties) {
// Action to perform : user token
properties.setProperty(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
// Set password type to hashed
properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
// Username in keystore
properties.setProperty(WSHandlerConstants.USER, ParamLoader.getMessage(Constants.MUTUALISATION_USER));
// Used do retrive password for given user name
properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordHandler.class.getName());
}
ceci est traduit dans un message SOAP envoyé à l'application de la mutualisation:
et ce message est le suivant (message recu lors du deploiement dans Jetty
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlnssd="http://www.w3.org/2001/XMLSchema" xmlns
si="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-22579163" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">serveralias</wsse:Username>
<wsseassword Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">5V4N4i2qfUKxBzXnxdibXmWVbMQ=</wsse
assword>
<wsse:Nonce xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">W5sJqFWron0OwmDQV6QIrw==</wsse:Nonce>
<wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2010-04-27T11:41:14.662Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<listCostCenter xmlns="http://myapps.ma/mutualisation/Activite/" />
</soap:Body></soap:Envelope>
Cdt.
Hicham.
Partager