Hi. I created a WS client, based on a WSDL file, using the JDeveloper (11.1.2.4) wizard. The WS uses a UserName Token.
package prod;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import javax.xml.ws.BindingProvider;
import weblogic.security.SSL.TrustManager;
import weblogic.wsee.security.bst.ClientBSTCredentialProvider;
import weblogic.wsee.security.saml.SAMLTrustCredentialProvider;
import weblogic.wsee.security.unt.ClientUNTCredentialProvider;
import weblogic.wsee.security.util.CertUtils;
import weblogic.xml.crypto.wss.WSSecurityContext;
import weblogic.xml.crypto.wss.provider.CredentialProvider;
// This source file is generated by Oracle tools.
// Contents may be subject to change.
// For reporting problems, use the following:
// Generated by Oracle JDeveloper 11g Release 2 11.1.2.4.0.6436
public class wssimpleClient {
public static void main(String[] args) {
ALRService aLRService = new ALRService();
IALRService iALRService = aLRService.getWssimple();
// Configure credential providers
Map<String, Object> requestContext = ((BindingProvider)iALRService).getRequestContext();
try {
setPortCredentialProviderList(requestContext);
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println(iALRService.alrECHO("Abracadabra"));
}
@Generated("Oracle JDeveloper")
public static void setPortCredentialProviderList(Map<String, Object> requestContext) throws Exception {
// TODO - Provide the required credential values
String username = "XXX";
String password = "YYYY";
String clientKeyStore = "";
String clientKeyStorePassword = "";
String clientKeyAlias = "";
String clientKeyPassword = "";
String serverKeyStore = "";
String serverKeyStorePassword = "";
String serverKeyAlias = "";
List<CredentialProvider> credList = new ArrayList<CredentialProvider>();
// Add the necessary credential providers to the list
// Code commented out due to empty username/password value found in the credential.
credList.add(getUNTCredentialProvider(username, password));
// Code commented out due to empty server keystore value found in the credential.
// credList.add(getBSTCredentialProvider(clientKeyStore, clientKeyStorePassword, clientKeyAlias, clientKeyPassword, serverKeyStore, serverKeyStorePassword, serverKeyAlias, requestContext));
credList.add(getSAMLTrustCredentialProvider());
requestContext.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credList);
}
@Generated("Oracle JDeveloper")
public static CredentialProvider getSAMLTrustCredentialProvider() {
return new SAMLTrustCredentialProvider();
}
@Generated("Oracle JDeveloper")
public static CredentialProvider getUNTCredentialProvider(String username, String password) {
return new ClientUNTCredentialProvider(username.getBytes(), password.getBytes());
}
@Generated("Oracle JDeveloper")
public static CredentialProvider getBSTCredentialProvider(String clientKeyStore, String clientKeyStorePwd,
XXX String clientKeyAlias, String clientKeyPwd,
String serverKeyStore, String serverKeyStorePwd,
String serverKeyAlias,
Map<String, Object> requestContext) throws Exception {
List serverCertList = CertUtils.getCertificate(serverKeyStore, serverKeyStorePwd, serverKeyAlias, "JKS");
List clientCertList = CertUtils.getCertificate(clientKeyStore, clientKeyStorePwd, clientKeyAlias, "JKS");
final X509Certificate serverCert =
(serverCertList != null && serverCertList.size() > 0) ? (X509Certificate)serverCertList.get(0) : null;
final X509Certificate clientCert =
(clientCertList != null && clientCertList.size() > 0) ? (X509Certificate)clientCertList.get(0) : null;
requestContext.put(WSSecurityContext.TRUST_MANAGER, new TrustManager() {
public boolean certificateCallback(X509Certificate[] chain, int validateErr) {
boolean result =
(chain != null && chain.length > 0) && (chain[0].equals(serverCert) || chain[0].equals(clientCert));
return result;
}
});
return new ClientBSTCredentialProvider(clientKeyStore, clientKeyStorePwd, clientKeyAlias, clientKeyPwd, "JKS",
serverCert);
}
}
"C:\Program Files\Java\jdk1.7.0_97\bin\javaw.exe" -server -classpath C:\SVN\JDeveloper\brzEdiApp\.adf;C:\SVN\JDeveloper\brzEdiApp\ediApp\classes;C:\Oracle\MiddlewareJDev12211\wlserver\server\lib\weblogic.jar;C:\Oracle\MiddlewareJDev11124\wlserver_10.3\server\lib\weblogic.jar;C:\Oracle\MiddlewareJDev11124\oracle_common\modules\oracle.jrf_11.1.1\jrf.jar;C:\Oracle\MiddlewareJDev11124\modules\com.oracle.toplink_1.0.0.0_11-1-1-5-0.jar;C:\Oracle\MiddlewareJDev11124\modules\org.eclipse.persistence_1.1.0.0_2-1.jar;C:\Oracle\MiddlewareJDev11124\modules\com.bea.core.antlr.runtime_2.7.7.jar;C:\Oracle\MiddlewareJDev11124\modules\javax.persistence_1.0.0.0_2-0-0.jar -Djavax.net.ssl.trustStore=C:\Users\CInglez\AppData\Local\Temp\trustStore2859207305703468196.jks prod.wssimpleClient
weblogic.wsee.security.wss.policy.SecurityPolicyArchitectureException: -- No credential provider found for token type = [http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken];
at weblogic.wsee.security.wss.sps.SmartPolicySelector.buildSmartPolicyList(SmartPolicySelector.java:400)
at weblogic.wsee.security.wss.sps.SmartPolicySelector.loadPolicyList(SmartPolicySelector.java:262)
at weblogic.wsee.security.wss.sps.SmartPolicySelector.init(SmartPolicySelector.java:181)
at weblogic.wsee.security.wss.sps.SmartPolicySelector.<init>(SmartPolicySelector.java:110)
at weblogic.wsee.security.wss.SecurityPolicyArchitect.processMessagePolicy(SecurityPolicyArchitect.java:95)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:117)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:89)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processOutbound(WssClientHandler.java:115)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processRequest(WssClientHandler.java:67)
at weblogic.wsee.security.wssp.handlers.WssHandler.handleRequest(WssHandler.java:112)
at weblogic.wsee.security.wst.helpers.SOAPHelper.invokeWsspHandler(SOAPHelper.java:407)
at weblogic.wsee.security.wst.framework.TrustSoapClient.invoke(TrustSoapClient.java:133)
at weblogic.wsee.security.wst.framework.TrustSoapClient.requestTrustToken(TrustSoapClient.java:109)
at weblogic.wsee.security.wst.framework.WSTCredentialProviderHelper.createCredential(WSTCredentialProviderHelper.java:46)
at weblogic.wsee.security.wst.framework.WSTCredentialProviderHelper.createCredential(WSTCredentialProviderHelper.java:36)
at weblogic.wsee.security.wssc.base.sct.ClientSCCredentialProviderBase.createSCCredential(ClientSCCredentialProviderBase.java:438)
at weblogic.wsee.security.wssc.base.sct.ClientSCCredentialProviderBase.requestCredential(ClientSCCredentialProviderBase.java:150)
at weblogic.wsee.security.wssc.base.sct.ClientSCCredentialProviderBase.getCredential(ClientSCCredentialProviderBase.java:124)
at weblogic.wsee.security.wssc.v200502.sct.ClientSCCredentialProvider.getCredential(ClientSCCredentialProvider.java:33)
at weblogic.xml.crypto.wss.SecurityBuilderImpl.getCredential(SecurityBuilderImpl.java:778)
at weblogic.xml.crypto.wss.SecurityBuilderImpl.getSecurityToken(SecurityBuilderImpl.java:751)
at weblogic.xml.crypto.wss.SecurityBuilderImpl.addSignatureInternal(SecurityBuilderImpl.java:314)
at weblogic.xml.crypto.wss11.internal.SecurityBuilderImpl.addSignature(SecurityBuilderImpl.java:364)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.doProcessIntegrity(SecurityMessageArchitect.java:1015)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.processIntegrity(SecurityMessageArchitect.java:981)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.constructMessage(SecurityMessageArchitect.java:333)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.buildWssMessage(SecurityMessageArchitect.java:141)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.buildWssMessage(SecurityMessageArchitect.java:124)
at weblogic.wsee.security.wss.SecurityPolicyArchitect.processOutbound(SecurityPolicyArchitect.java:227)
at weblogic.wsee.security.wss.SecurityPolicyArchitect.processMessagePolicy(SecurityPolicyArchitect.java:125)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:117)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:89)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processOutbound(WssClientHandler.java:115)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processRequest(WssClientHandler.java:67)
at weblogic.wsee.security.wssp.handlers.WssHandler.handleRequest(WssHandler.java:112)
at weblogic.wsee.jaxws.framework.jaxrpc.TubeFactory$JAXRPCTube.processRequest(TubeFactory.java:234)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.client.Stub.process(Stub.java:463)
at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:265)
at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:304)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:147)
at com.sun.proxy.$Proxy39.invoke(Unknown Source)
at weblogic.wsee.reliability2.io.Sender.send(Sender.java:200)
at weblogic.wsee.reliability2.io.SequenceIOImpl$1.run(SequenceIOImpl.java:606)
at weblogic.wsee.reliability2.io.SequenceIOImpl$1.run(SequenceIOImpl.java:602)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:368)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:163)
at weblogic.wsee.jaxws.provider.SecurityServiceImpl.runActionAsSubject(SecurityServiceImpl.java:101)
at weblogic.wsee.jaxws.persistence.PersistentMessageFactory.runActionInSubject(PersistentMessageFactory.java:359)
at weblogic.wsee.reliability2.io.SequenceIOImpl.runAsWithSequenceSubject(SequenceIOImpl.java:647)
at weblogic.wsee.reliability2.io.SequenceIOImpl.sendProtocolMessagePacket(SequenceIOImpl.java:625)
at weblogic.wsee.reliability2.io.SourceSequenceIOImpl.sendCreateSequence(SourceSequenceIOImpl.java:1345)
at weblogic.wsee.reliability2.io.AbstractSourceSequenceSender$1.run(AbstractSourceSequenceSender.java:182)
at weblogic.wsee.reliability2.io.AbstractSourceSequenceSender$1.run(AbstractSourceSequenceSender.java:177)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:368)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:163)
at weblogic.wsee.jaxws.provider.SecurityServiceImpl.runActionAsSubject(SecurityServiceImpl.java:101)
at weblogic.wsee.jaxws.persistence.PersistentMessageFactory.runActionInSubject(PersistentMessageFactory.java:359)
at weblogic.wsee.reliability2.io.AbstractSourceSequenceSender.checkSequenceCreated(AbstractSourceSequenceSender.java:175)
at weblogic.wsee.reliability2.sender.ClientRequestSequenceSender.send(ClientRequestSequenceSender.java:101)
at weblogic.wsee.reliability2.sender.ClientRequestSequenceSender.send(ClientRequestSequenceSender.java:76)
at com.oracle.sender.provider.standard.ConversationAgentImpl.sendOneRequest(ConversationAgentImpl.java:930)
at com.oracle.sender.provider.standard.ConversationAgentImpl.access$1600(ConversationAgentImpl.java:34)
at com.oracle.sender.provider.standard.ConversationAgentImpl$SendBatchOfRequestsAction.invoke(ConversationAgentImpl.java:758)
at com.oracle.sender.provider.standard.ConversationAgentImpl.sendPendingRequests(ConversationAgentImpl.java:659)
at com.oracle.sender.provider.standard.ConversationAgentImpl.access$500(ConversationAgentImpl.java:34)
at com.oracle.sender.provider.standard.ConversationAgentImpl$2.run(ConversationAgentImpl.java:534)
at java.lang.Thread.run(Thread.java:745)
Oct 26, 2016 7:15:33 PM weblogic.wsee.WseeCoreMessages errorLogException
SEVERE: Error while invoking endpoint https://alr.renault-nissan.com/ALRSERVICE/Service/BRZ/ALRService.svc/simple from client; ServiceName: {http://tempuri.org/}ALRService ; PortName: {http://tempuri.org/}wssimple ; Client side features: [weblogic.wsee.jaxws.spi.AsyncHandlerAllowedInternalFeature][weblogic.jws.jaxws.client.ClientIdentityFeature]; Client side policies:
weblogic.wsee.security.wss.policy.SecurityPolicyArchitectureException: -- No credential provider found for token type = [http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken];
at weblogic.wsee.security.wss.sps.SmartPolicySelector.buildSmartPolicyList(SmartPolicySelector.java:400)
at weblogic.wsee.security.wss.sps.SmartPolicySelector.loadPolicyList(SmartPolicySelector.java:262)
at weblogic.wsee.security.wss.sps.SmartPolicySelector.init(SmartPolicySelector.java:181)
at weblogic.wsee.security.wss.sps.SmartPolicySelector.<init>(SmartPolicySelector.java:110)
at weblogic.wsee.security.wss.SecurityPolicyArchitect.processMessagePolicy(SecurityPolicyArchitect.java:95)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:117)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:89)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processOutbound(WssClientHandler.java:115)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processRequest(WssClientHandler.java:67)
at weblogic.wsee.security.wssp.handlers.WssHandler.handleRequest(WssHandler.java:112)
at weblogic.wsee.security.wst.helpers.SOAPHelper.invokeWsspHandler(SOAPHelper.java:407)
at weblogic.wsee.security.wst.framework.TrustSoapClient.invoke(TrustSoapClient.java:133)
at weblogic.wsee.security.wst.framework.TrustSoapClient.requestTrustToken(TrustSoapClient.java:109)
at weblogic.wsee.security.wst.framework.WSTCredentialProviderHelper.createCredential(WSTCredentialProviderHelper.java:46)
at weblogic.wsee.security.wst.framework.WSTCredentialProviderHelper.createCredential(WSTCredentialProviderHelper.java:36)
at weblogic.wsee.security.wssc.base.sct.ClientSCCredentialProviderBase.createSCCredential(ClientSCCredentialProviderBase.java:438)
at weblogic.wsee.security.wssc.base.sct.ClientSCCredentialProviderBase.requestCredential(ClientSCCredentialProviderBase.java:150)
at weblogic.wsee.security.wssc.base.sct.ClientSCCredentialProviderBase.getCredential(ClientSCCredentialProviderBase.java:124)
at weblogic.wsee.security.wssc.v200502.sct.ClientSCCredentialProvider.getCredential(ClientSCCredentialProvider.java:33)
at weblogic.xml.crypto.wss.SecurityBuilderImpl.getCredential(SecurityBuilderImpl.java:778)
at weblogic.xml.crypto.wss.SecurityBuilderImpl.getSecurityToken(SecurityBuilderImpl.java:751)
at weblogic.xml.crypto.wss.SecurityBuilderImpl.addSignatureInternal(SecurityBuilderImpl.java:314)
at weblogic.xml.crypto.wss11.internal.SecurityBuilderImpl.addSignature(SecurityBuilderImpl.java:364)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.doProcessIntegrity(SecurityMessageArchitect.java:1015)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.processIntegrity(SecurityMessageArchitect.java:981)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.constructMessage(SecurityMessageArchitect.java:333)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.buildWssMessage(SecurityMessageArchitect.java:141)
at weblogic.wsee.security.wss.plan.SecurityMessageArchitect.buildWssMessage(SecurityMessageArchitect.java:124)
at weblogic.wsee.security.wss.SecurityPolicyArchitect.processOutbound(SecurityPolicyArchitect.java:227)
at weblogic.wsee.security.wss.SecurityPolicyArchitect.processMessagePolicy(SecurityPolicyArchitect.java:125)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:117)
at weblogic.wsee.security.wss.SecurityPolicyConductor.processRequestOutbound(SecurityPolicyConductor.java:89)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processOutbound(WssClientHandler.java:115)
at weblogic.wsee.security.wssp.handlers.WssClientHandler.processRequest(WssClientHandler.java:67)
at weblogic.wsee.security.wssp.handlers.WssHandler.handleRequest(WssHandler.java:112)
at weblogic.wsee.jaxws.framework.jaxrpc.TubeFactory$JAXRPCTube.processRequest(TubeFactory.java:234)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.client.Stub.process(Stub.java:463)
at com.sun.xml.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:265)
at com.sun.xml.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:304)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:147)
at com.sun.proxy.$Proxy39.invoke(Unknown Source)
at weblogic.wsee.reliability2.io.Sender.send(Sender.java:200)
at weblogic.wsee.reliability2.io.SequenceIOImpl$1.run(SequenceIOImpl.java:606)
at weblogic.wsee.reliability2.io.SequenceIOImpl$1.run(SequenceIOImpl.java:602)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:368)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:163)
at weblogic.wsee.jaxws.provider.SecurityServiceImpl.runActionAsSubject(SecurityServiceImpl.java:101)
at weblogic.wsee.jaxws.persistence.PersistentMessageFactory.runActionInSubject(PersistentMessageFactory.java:359)
at weblogic.wsee.reliability2.io.SequenceIOImpl.runAsWithSequenceSubject(SequenceIOImpl.java:647)
at weblogic.wsee.reliability2.io.SequenceIOImpl.sendProtocolMessagePacket(SequenceIOImpl.java:625)
at weblogic.wsee.reliability2.io.SourceSequenceIOImpl.sendCreateSequence(SourceSequenceIOImpl.java:1345)
at weblogic.wsee.reliability2.io.AbstractSourceSequenceSender$1.run(AbstractSourceSequenceSender.java:182)
at weblogic.wsee.reliability2.io.AbstractSourceSequenceSender$1.run(AbstractSourceSequenceSender.java:177)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:368)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:163)
at weblogic.wsee.jaxws.provider.SecurityServiceImpl.runActionAsSubject(SecurityServiceImpl.java:101)
at weblogic.wsee.jaxws.persistence.PersistentMessageFactory.runActionInSubject(PersistentMessageFactory.java:359)
at weblogic.wsee.reliability2.io.AbstractSourceSequenceSender.checkSequenceCreated(AbstractSourceSequenceSender.java:175)
at weblogic.wsee.reliability2.sender.ClientRequestSequenceSender.send(ClientRequestSequenceSender.java:101)
at weblogic.wsee.reliability2.sender.ClientRequestSequenceSender.send(ClientRequestSequenceSender.java:76)
at com.oracle.sender.provider.standard.ConversationAgentImpl.sendOneRequest(ConversationAgentImpl.java:930)
at com.oracle.sender.provider.standard.ConversationAgentImpl.access$1600(ConversationAgentImpl.java:34)
at com.oracle.sender.provider.standard.ConversationAgentImpl$SendBatchOfRequestsAction.invoke(ConversationAgentImpl.java:758)
at com.oracle.sender.provider.standard.ConversationAgentImpl.sendPendingRequests(ConversationAgentImpl.java:659)
at com.oracle.sender.provider.standard.ConversationAgentImpl.access$500(ConversationAgentImpl.java:34)
at com.oracle.sender.provider.standard.ConversationAgentImpl$2.run(ConversationAgentImpl.java:534)
at java.lang.Thread.run(Thread.java:745)
As there is another environment (test) where it works (display "Abracadabra"), can I be sure this is a server side issue? How can I know?
Thanks in advance.