2010-02-28 4 views
0

Je tente de développer un service Web JAX WS avec des fonctionnalités WS-Security dans WebLogic 10.3. J'ai utilisé les tâches Ant WSDLC, JWSC et ClientGen pour générer le squelette/stub pour ce service Web.Erreur lors de la mise en œuvre du service Web WS Security dans WebLogic 10.3

J'ai deux keystores à savoir WSIdentity.jks et WSTrust.jks qui contient les clés et les certificats. L'un des alias de WSIdentity.jks est "ws02p".

Le client de test a le code suivant pour appeler le service Web:

SecureSimpleService service = new SecureSimpleService(); 
SecureSimplePortType port = service.getSecureSimplePortType(); 

List credProviders = new ArrayList(); 
CredentialProvider cp = new ClientBSTCredentialProvider(
    "E:\\workspace\\SecureServiceWL103\\keystores\\WSIdentity.jks", 
    "webservice", "ws01p","webservice"); 

credProviders.add(cp); 

string endpointURL="http://localhost:7001/SecureSimpleService/SecureSimpleService"; 
BindingProvider bp = (BindingProvider)port; 
Map<String, Object> requestContext = bp.getRequestContext(); 

requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); 
requestContext.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST,credProviders); 

requestContext.put(WSSecurityContext.TRUST_MANAGER, new TrustManager() { 
    public boolean certificateCallback(X509Certificate[] chain, 
    int validateErr) { 
     // Put some custom validation code in here. 
     // Just return true for now 
     return true; 
    } 
}); 

SignResponse resp1 = new SignResponse(); 

***resp1 = port.echoSignOnlyMessage("hello sign");*** 
System.out.println("Result: " + resp1.getMessage()); 

Quand j'essaie d'invoquer cette servcie Web en utilisant ce client de test, je reçois l'erreur « politique de signature non valide » avec la pile suivante trace:

*[java] weblogic.wsee.security.wss.policy.SecurityPolicyArchitectureException: Invalid signing policy 
    [java] at weblogic.wsee.security.wss.plan.SecurityPolicyBlueprintDesigner.verifyPolicy(SecurityPolicyBlueprintDesigner.java:786) 
    [java] at weblogic.wsee.security.wss.plan.SecurityPolicyBlueprintDesigner.designOutboundBlueprint(SecurityPolicyBlueprintDesigner.java:136) 

Suis-je manque des paramètres de configuration dans la console d'administration WebLogic ou est-il faire autre chose?

Répondre

0

J'ai la même erreur que vous. Nous avons commencé à utiliser 10.3 et cette erreur a commencé à se produire. Les versions précédentes de weblogic allaient bien. J'ai utilisé l'outil wsimport de jdk 1.6 pour générer les classes côté client. Si j'exécute mon client en dehors du serveur weblogic et que je m'appuie sur l'implémentation de jdk1.6, je n'ai pas l'excpetion. Mais quand weblogic.jar est sur le classpath, l'exception est levée. Je réalise que jdk 1.6 et weblogic ont leurs propres implémentations jax-ws.

Si vous junit votre client en dehors de weblogic avec jdk 1.6 et essayez différentes versions de weblogic.jar sur votre chemin de classe, vous obtiendrez probablement des résultats différents.

Notre service Web est à un seul canal ssl. Le client a juste besoin de faire confiance à l'hôte. Le certificat du serveur se trouve dans notre truststore que jdk et weblogic utilisent. cacerts. Je n'aurais pas dû penser à plus de sécurité. En utilisant juste jdk 1.6 ou les versions précédentes de weblogic, le code suivant fonctionne correctement.

TestService test = new TestService(); 
TestPortType port = test.getTestPort(); 
((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
     "https://host/test"); 

((BindingProvider)port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, 
     "user_name"); 

((BindingProvider)port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, 
     "password"); 

TestRequest request = new TestRequest(); 
request.setWho("Dan Mad"); 
TestResult result = port.send(request); 
System.out.println("result: "+result.getResult()); 

Lorsque weblogic.jar de 10,3 est le classpath cependant, le code ci-dessus tombe à l'exception de SecurityPolicyArchitectureException. Je ne suis pas sûr de ce que notre client doit fournir d'autre. Votre client met en place plus de choses liées à la sécurité mais je ne suis pas sûr si cela est nécessaire pour notre cas. J'ai déposé une requête auprès d'Oracle. Pas de chance pour le moment.

Questions connexes