Je suis en train de se connecter (sans succès) à ce qui suit WS en utilisant Java:Intégration avec TERYT - service web du gouvernement polonais
- Adresse du service après - https://uslugaterytws1test.stat.gov.pl/terytws1.svc
- adresse WSDL - https://uslugaterytws1test.stat.gov.pl/wsdl/terytws1.wsdl
- utilisateur - TestPubliczny
- Mot de passe - 1234abcd
J'ai essayé de nous e soapui sans succès. Essayé l'authentification de base et NTLM, et je reçois toujours l'erreur suivante:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action>
</s:Header>
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode>
<faultstring xml:lang="en-US">An error occurred when verifying security for the message.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
Les instructions officielles pour montre ce service Web exemple suivant pour vous connecter en utilisant C#. Je n'ai pas testé cela, mais je suppose que cela fonctionne correctement.
try {
var proxy = new ChannelFactory<ServiceReferenceWCF.ITerytWs1>("custom");
proxy.Credentials.UserName.UserName = login;
proxy.Credentials.UserName.Password = haslo;
var result = proxy.CreateChannel();
var test = result.CzyZalogowany(); // should return true if connected correctly
} catch (Exception ex) { }
Et en dessous du réglage:
<client>
<endpoint address="https://uslugaterytws1.stat.gov.pl/TerytWs1.svc" binding="customBinding" bindingConfiguration="custom" contract="ServiceReference1.ITerytWs1" name="custom" />
</client>
<bindings>
<customBinding>
<binding name="custom">
<security defaultAlgorithmSuite="Default" authenticationMode="UserNameOverTransport" requireDerivedKeys="true" includeTimestamp="true" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<localClientSettings detectReplays="false" />
<localServiceSettings detectReplays="false" />
</security>
<textMessageEncoding messageVersion="Soap11WSAddressing10" />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" />
</binding>
</customBinding>
</bindings>
J'ai donc essayé de se connecter à l'aide de Java suivante façon:
public static void main(String[] args) {
try {
final String wsdlResourcePath = "wsdl/jaxb/teryt/terytws1.wsdl";
final String url = "https://uslugaterytws1test.stat.gov.pl/TerytWs1.svc";
ITerytWs1 teryt = createSoapEndpoint((wsdlLocation) -> new TerytWs1(wsdlLocation).getCustom(), wsdlResourcePath, url);
System.out.println(teryt.czyZalogowany());
} catch (Exception e) { }
}
private static <SOAP> SOAP createSoapEndpoint(SoapCreator<SOAP> soapCreator, String wsdlResourcePath, String url) {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
URL wsdlLocation = cl.getResource(wsdlResourcePath);
SOAP soap = soapCreator.create(wsdlLocation);
BindingProvider provider = (BindingProvider) soap;
Map<String, Object> context = provider.getRequestContext();
context.put(BindingProvider.USERNAME_PROPERTY, "TestPubliczny");
context.put(BindingProvider.PASSWORD_PROPERTY, "1234abcd");
context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
return soap;
}
Malheureusement le code se fige pendant un appel "teryt.czyZalogowany()". Ne donne aucun timeout - rien, juste le traitement de cette ligne pour toujours, ou est bloqué à elle.
Mon code Java produit suivant les messages d'avertissement:
WARNING: WSP0075: Policy assertion "{ http://schemas.xmlsoap.org/ws/2005/07/securitypolicy }SignedSupportingTokens" was evaluated as "UNKNOWN". lip 27, 2017 11:58:35 AM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives WARNING: WSP0075: Policy assertion "{ http://schemas.xmlsoap.org/ws/2005/07/securitypolicy }TransportBinding" was evaluated as "UNKNOWN". lip 27, 2017 11:58:35 AM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives WARNING: WSP0075: Policy assertion "{ http://schemas.xmlsoap.org/ws/2005/07/securitypolicy }Trust10" was evaluated as "UNKNOWN". lip 27, 2017 11:58:35 AM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives WARNING: WSP0075: Policy assertion "{ http://schemas.xmlsoap.org/ws/2005/07/securitypolicy }Wss11" was evaluated as "UNKNOWN". lip 27, 2017 11:58:35 AM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives WARNING: WSP0075: Policy assertion "{ http://www.w3.org/2006/05/addressing/wsdl }UsingAddressing" was evaluated as "UNKNOWN". lip 27, 2017 11:58:35 AM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives WARNING: WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN".
Peut-être quelqu'un sait plus sur ce genre de problème, ou sera en mesure de se connecter à ce WS tout de suite avec sa propre configuration - au moment où je don Je n'ai pas la moindre idée de ce qui pourrait être le problème, et je vois une perspective de «gaspillage de temps» en face de moi ... alors s'il vous plaît aider.
Merci bartosz. Maintenant - avec l'adressage activé - la réponse Java est cohérente avec le soapui: "Une erreur s'est produite lors de la vérification de la sécurité du message.". On dirait qu'il manque encore une configuration. Êtes-vous en mesure de vous connecter et de recevoir une réponse positive de ce service Web? – msi