[Autohotkey] SOAP WSAPI crash course?

Pagina: 1
Acties:
  • 1.706 views

Vraag


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Mijn vraag
Ik wil graag een SOAP WSAPI gebruiken in mijn automatiseringscript. Alleen is dit nieuw voor me.
Wie kan mij begeleiden in de opmaak van zo'n soap xml request? Ik heb genoeg aan een werkend concept, daarna red ik me wel😊

Het is een besloten API dus ik Ben terughoudend in het plaatsen van hun documentatie erover. De documentatie omvat voornamelijk alle operaties met hun values. Het heeft ook de wsdl webadressen die ik zal moeten gebruiken.

Relevante software en hardware die ik gebruik
Het script wordt geschreven in Autohotkey. Die tool heb ik redelijk onder de knie.

De API protocollen:
HTTP 1.1
SOAP 1.1
WSDL 1.1
WS-Policy 1.2
WS-PolicyAttachment
WS-MetadataExchange
WSS SOAP Message Security 1.0
WSS SOAP Message Security UsernameToken Profile 1.0

Wat ik al gevonden of geprobeerd heb
ik heb Al onder de knie hoe ik in Autohotkey een API POST stuur, ontvang, en verwerkt.
Dit op basis van openbare API's zoals https://www.dataaccess.co...rver/NumberConversion.wso

de hulp die ik zoek
Is hoe moet ik mijn request opmaken met authenticatie?

Er staat in de documentatie:
"Een WSAPI gebruiker moet zich bij elke aanroep van een webservice operatie identificeren met inloggegevens..."

De API stuurt bij een goede request dan een xml overzicht terug.

Als er nog info vanuit mijn Kant ontbreekt Dan hoor ik dat graag. Vergeef me dat ik absoluut nieuw Ben in APIs

[ Voor 29% gewijzigd door 7Sins op 10-02-2024 23:28 ]

Beste antwoord (via 7Sins op 12-02-2024 22:08)


  • Flight77
  • Registratie: Januari 2009
  • Laatst online: 19:29
Ik zou hoofdstuk 5 van je ws security docs goed bekijken: https://docs.oasis-open.o...-message-security-1.0.pdf

Geen ervaring mee maar ik vermoed dat je een security header moet meegeven met een username token en een password token.

Vermoedelijk iets zoals:

code:
1
2
3
4
5
6
7
8
<xxx:Envelope>
    <xxx:Header>
        <yyy:Security>
            <yyy:UsernameToken><yyy:Username>USERNAME</yyy:Username></yyy:UsernameToken>
            ....
        </yyy:Security>
    </xxx:Header>
</xxx:Envelope>


Waarbij je goed moet opletten dat de "xxx" en "yyy" namespaces overeenkomen met wat je in de hoofd tag meegeeft aan namespaces (ns="")
Weglaten van namespaces kan misschien ook.

Let ook goed op dat je de tags niet te vroeg afsluit, zoals je bij je voorbeeld hebt gedaan.
code:
1
2
3
<soapenv:Header/>    <------ DEZE IS AFGESLOTEN
      <Username>test123</Username>
      <Password>test123</Password>

Alle reacties


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 23:59

Haan

dotnetter

Ik heb er nu verder even geen tijd voor, maar je voorbeeld ziet er uit als een . Net WCF service als ik me niet vergis. Dus wellicht helpt je dat bij het zoeken ;)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Inmiddels heb ik de WSDL files van authenticationservice bekeken.
Ik kan er zelf niet heel veel kaas van eten, maar er staat niets tussen dat omschrijft waarin je je username/password kan indienen.

Edit: het copy/paste gaat helaas niet lekker met de tabs

Authenticationservice:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.voorbeeld.nl/wsapi/2008/01" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" name="AuthenticationService" targetNamespace="http://www.voorbeeld.nl/wsapi/2008/01">
<wsp:Policy wsu:Id="Authentication_policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy/>
</sp:Wss10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
<wsdl:types>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://www.voorbeeld.nl/wsapi/2008/01">
<xsd:element name="ChangePasswordRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="NewPassword" type="xsd:string"/>
<xsd:element minOccurs="0" maxOccurs="1" name="OldPassword" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ChangePasswordResponse">
<xsd:complexType/>
</xsd:element>
<xsd:element name="PasswordExpirationDate" nillable="true" type="xsd:dateTime"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="ChangePasswordRequest">
<wsdl:part name="parameters" element="tns:ChangePasswordRequest"/>
</wsdl:message>
<wsdl:message name="ChangePasswordResponse">
<wsdl:part name="parameters" element="tns:ChangePasswordResponse"/>
</wsdl:message>
<wsdl:message name="UserInformationRequest"/>
<wsdl:message name="UserInformationResponse">
<wsdl:part name="PasswordExpirationDate" element="tns:PasswordExpirationDate"/>
</wsdl:message>
<wsdl:portType name="AuthenticationServiceContract">
<wsdl:operation name="ChangePassword">
<wsdl:input wsaw:Action="http://www.voorbeeld.nl/wsapi/2008/01/AuthenticationServiceContract/ChangePassword" name="ChangePasswordRequest" message="tns:ChangePasswordRequest"/>
<wsdl:output wsaw:Action="http://www.voorbeeld.nl/wsapi/2008/01/AuthenticationServiceContract/ChangePasswordResponse" name="ChangePasswordResponse" message="tns:ChangePasswordResponse"/>
</wsdl:operation>
<wsdl:operation name="GetUserInformation">
<wsdl:input wsaw:Action="http://www.voorbeeld.nl/wsapi/2008/01/AuthenticationServiceContract/GetUserInformation" name="UserInformationRequest" message="tns:UserInformationRequest"/>
<wsdl:output wsaw:Action="http://www.voorbeeld.nl/wsapi/2008/01/AuthenticationServiceContract/GetUserInformationResponse" name="UserInformationResponse" message="tns:UserInformationResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="Authentication" type="tns:AuthenticationServiceContract">
<wsp:PolicyReference URI="#Authentication_policy"/>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="ChangePassword">
<soap:operation soapAction="http://www.voorbeeld.nl/wsapi/2008/01/AuthenticationServiceContract/ChangePassword" style="document"/>
<wsdl:input name="ChangePasswordRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="ChangePasswordResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetUserInformation">
<soap:operation soapAction="http://www.voorbeeld.nl/wsapi/2008/01/AuthenticationServiceContract/GetUserInformation" style="document"/>
<wsdl:input name="UserInformationRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="UserInformationResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AuthenticationService">
<wsdl:port name="Authentication" binding="tns:Authentication">
<soap:address location="https://voorbeeld.nl/WSapi/AuthenticationService.svc"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Acties:
  • +1 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Eigenlijk heb je nog 0 met soap inhoudelijk geprobeerd.
Misschien beginnen met iets met een echte client als SoapUI voor elkaar proberen te krijgen? Dan kan je daarna de diverse requests en responses beter begrijpen en het verder automatiseren.

{signature}


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Voutloos schreef op zaterdag 10 februari 2024 @ 13:22:
Eigenlijk heb je nog 0 met soap inhoudelijk geprobeerd.
Misschien beginnen met iets met een echte client als SoapUI voor elkaar proberen te krijgen? Dan kan je daarna de diverse requests en responses beter begrijpen en het verder automatiseren.
Ik heb SoapUI, en alle WSDL's daarin geimporteerd. Het helpt me enorm met de vormgeving van soap requests. Alleen mijn grootste vraagstuk (die wellicht verwaterd is geraakt in de OP) is; hoe authenticate ik mijn request m.b.v. username/password?
SoapUI toont binnen het project niets over authenticatie.

Toevoeging:
http://docs.oasis-open.or...wssecurity-secext-1.0.xsd
hier staat meer over het gebruikte security protocol. Ik kan er enigszins uit opmaken dat daarmee de credentials indediend kunnen worden. Maar ik zou moeten gokken op hoe ik dit in mn soap request verwerkt krijg.

[ Voor 32% gewijzigd door 7Sins op 10-02-2024 13:58 ]


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Tot zover heb ik m.b.v. SoapUI de volgende request getoverd.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST https://voorbeeld.nl/WSapi/ReferenceDataService.svc HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.voorbeeld.nl/wsapi/2008/01/ReferenceDataServiceContract/GetProducts"
Content-Length: 230
Host: voorbeeld.nl
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.5 (Java/16.0.2)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.voorbeeld.nl/wsapi/2008/01">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:ProductsRequest/>
   </soapenv:Body>
</soapenv:Envelope>


Alleen hier ontbreekt het stukje authenticatie. Waardoor ik de volgende foutmelding krijg:

code:
1
<faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode>


Er staat in de documentatie niet of de authorizatie gaat op Basic/NTLM/SPNEGO. Ik heb deze via SoapUI allemaal geprobeerd. Allemaal met dezelfde foutcode.

[ Voor 9% gewijzigd door 7Sins op 10-02-2024 23:25 ]


Acties:
  • 0 Henk 'm!

Anoniem: 80910

Ik heb dit bij de kvk geprobeert en lukte het me bij soap ui uiteindelijk wel met credentials, maar terwijl ik het in php wilde hebben is me dat niet gelukt. De versie kwam niet overeen. Het is niet makkelijk, een '/' te veel of te weinig kan al een falend request opleveren. Ik vind soap helemaal niets, veel te ingewikkeld voor een simpele request. Maar dan heb je wel uniformiteit en gedateerde technologie. Een jwt token meesturen is vele malen eenvoudiger dan soap.

Dit document heb ik toen gebruikt. https://www.google.com/ur...Vaw3FkiCb_60vyBmrS38QaHpT

[ Voor 22% gewijzigd door Anoniem: 80910 op 11-02-2024 06:51 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Anoniem: 80910 schreef op zondag 11 februari 2024 @ 06:49:
Een jwt token meesturen is vele malen eenvoudiger dan soap.
Een JWT token en SOAP hebben niets met mekaar van doen; hell: je zou een JWT token kunnen gebruiken voor authenticatie bij een SOAP request. SOAP is (meestal) niets anders dan een gewoon HTTP request met een applicatieprotocol; ja, het is wat wollig, maar het is dan ook niet de bedoeling dat je SOAP request/responses "met de hand" gaat lopen coden. Daar zijn libraries en frameworks (zoals WCF en in PHP SOAP) voor.
7Sins schreef op vrijdag 9 februari 2024 @ 20:51:
Het is een besloten API dus ik Ben terughoudend in het plaatsen van hun documentatie erover.
@7Sins Als het niet duidelijk is hoe je moet authenticeren, en je kunt ons er klaarblijkelijk niets over vertellen, waarom vraag je het dan niet aan de dienstaanbieder :? Er zijn talloze manieren om the authenticeren en hier blijven gokken gaat je niet verder helpen.

[ Voor 27% gewijzigd door RobIII op 11-02-2024 12:28 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
RobIII schreef op zondag 11 februari 2024 @ 12:21:
waarom vraag je het dan niet aan de dienstaanbieder :? Er zijn talloze manieren om the authenticeren en hier blijven gokken gaat je niet verder helpen.
De vraag staat Al uit bij de dienstaanbieder, die helaas niet bekend staat om zijn snelle dienstverlening.

Ik wil hier graag zoveel mogelijk delen wat helpt om tot de oplossing te komen. Het leek me niet nodig alle documentatie even op tafel te leggen.
Als er bepaalde informatie ontbreekt Dan hoor ik dat graag. Dan ga ik de documenten raadplegen.

Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Dit staat er over beveiliging:

Afbeeldingslocatie: https://tweakers.net/i/GKjUfOGrqq6pRb7rPTc18U-nbHg=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/Y6c2sa4wylr1OfDwKiV8DeBf.png?f=user_large

WSS SOAP Message Security 1.0 http://docs.oasis-open.or...-message-security-1.0.pdf Beschrijft de basisafspraken over hoe berichten kunnen worden versleuteld en voorzien van identificatiegegevens. WSS SOAP Message Security UsernameToken Profile 1.0 http://docs.oasis-open.or...ame-token-profile-1.0.pdf Beschrijft de afspraken over het beveiligen van berichten met een gebruikersnaam en een wachtwoord (of een versleutelde versie hiervan).

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

7Sins schreef op zondag 11 februari 2024 @ 13:54:
WSS SOAP Message Security UsernameToken Profile 1.0 http://docs.oasis-open.or...ame-token-profile-1.0.pdf Beschrijft de afspraken over het beveiligen van berichten met een gebruikersnaam en een wachtwoord (of een versleutelde versie hiervan).
Daar heb je 't toch?
Heb je relevante(!) code? Laat eens zien wat je stuurt (geredigeerd)?

[ Voor 8% gewijzigd door RobIII op 11-02-2024 14:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Anoniem: 80910

Dat zei ik ook niet, ik deed alleen een aanname dat de topic starter een soap wilde gebruiken in combinatie met authenticatie. Dan is mijn persoonlijke mening skip soap en doe de authenticatie met een jwt.
Deze had ik toen gebruikt https://github.com/robric...les/soap-sign-encrypt.php

[ Voor 35% gewijzigd door Anoniem: 80910 op 11-02-2024 15:33 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Anoniem: 80910 schreef op zondag 11 februari 2024 @ 15:32:
skip soap en doe de authenticatie met een jwt
Hoezo "skip soap en doe de authenticatie met een jwt"? Je kunt je authenticatie op talloze manieren doen, maar dat is dan ook exact dat... authenticatie. SOAP staat daar helemaal los van. SOAP is een messaging protocol en heeft geen kont te maken met authenticatie. Dus hoezo "skip SOAP" :?

Het is alsof iemand vraagt: "Wat heb ik nodig om op 't vliegveld door de douane te komen?" waarop jij antwoordt: "Skip je koffer, gebruik een paspoort!"

Verder heeft TS niet veel te "skippen" of überhaupt te willen; als zijn serviceaanbieder SOAP met UsernameToken gebruikt dan kun je wel komen aanzetten met je JWT maar dat gaat dan natuurlijk niet werken (of serviceaanbieder moet open staan voor meerdere authenticatiemethoden en diens dienst daarop willen aanpassen - ervaring leert dat in 99 v.d. 100 gevallen zo'n aanbieder zegt: het is wat het is, je doet 't er maar mee of je moet een grote / belangrijke klant zijn).

[ Voor 16% gewijzigd door RobIII op 11-02-2024 15:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Anoniem: 80910

Sorry had ik overheen gelezen, ik dacht dat meneer iets wou uitproberen. Soap wordt volgens mij veel gebruikt bij Java backend. De kvk soap deed het niet vanwege een protocol mismatch. Ik had dat toen opgelost door via een headless chrome in te loggen op de portal, wat overigens vele malen eenvoudiger dan soap aan de praat krijgen. Kost als het tegen zit toch meer dan 2 weken...

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Sorry @Anoniem: 80910 maar dit is écht een ontzettend "de klok horen luiden maar niet weten waar de klepel hangt" verhaal. Een "protocol mismatch" (SOAP 1.0 / 1.1 / 1.2) los je niet op door "via een headless chrome in te loggen op de portal" maar door de juiste versie van 't protocol te gebruiken. Dat je dat niet aan de praat hebt gekregen indertijd, ken beur'n, hebben we allemaal wel eens last van. En fijn dat je 't "creatief" hebt weten oplossen d:)b Maar wat je nu in dit topic allemaal zegt slaat écht als een tang op een varken. Sorry.

[ Voor 5% gewijzigd door RobIII op 11-02-2024 17:24 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
RobIII schreef op zondag 11 februari 2024 @ 14:28:
[...]

Daar heb je 't toch?
Heb je relevante(!) code? Laat eens zien wat je stuurt (geredigeerd)?
Ik kan helaas geen kaas eten van die documentatie. Ik ben daar nog te nieuw voor.


Op het moment heb ik mijn soap request wat gestript tot het minimum. en vanaf daar geprobeerd te werken..

code:
1
2
3
4
5
6
7
8
9
10
11
12
POST https://voorbeeld.nl/WSapi/ReferenceDataService.svc HTTP/1.1
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.voorbeeld.nl/wsapi/2008/01/ReferenceDataServiceContract/GetProducts"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.voorbeeld.nl/wsapi/2008/01">
   <soapenv:Header/>
      <Username>test123</Username>
      <Password>test123</Password>
   <soapenv:Body>
      <ns:ProductsRequest/>
   </soapenv:Body>
</soapenv:Envelope>


dit geeft mij al een HTTP 400 bad request.

als ik de <username> en <password> weglaat dan kom ik verder tot aan HTTP 500

code:
1
2
3
4
5
6
7
8
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <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="nl-NL">An error occurred when verifying security for the message.</faultstring>
      </s:Fault>
   </s:Body>
</s:Envelope>



in /WSapi/ReferenceDataService.svc staan de volgende codes bovenaan. Daar komt ook de security in voor. Wellicht van hulp.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
xmlns:wsa10="http://www.w3.org/2005/08/addressing" 
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" 
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.voorbeeld.nl/wsapi/2008/01" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" name="ReferenceDataService" 
targetNamespace="http://www.voorbeeld.nl/wsapi/2008/01">

Acties:
  • 0 Henk 'm!

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 10-05 13:28
Soms kan het helpen om een tool te gebruiken die je kan ondersteunen.
Voor SOAP, zou ik kiezen voor SoapUI: https://www.soapui.org/

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Heb je al eens gekeken naar de eerste paar hits op google zoals deze?

Edit: Ik zie nu dat 't @Anoniem: 80910 was die over PHP begon; om welke taal gaat 't in jouw geval @7Sins ?

[ Voor 21% gewijzigd door RobIII op 12-02-2024 14:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Flight77
  • Registratie: Januari 2009
  • Laatst online: 19:29
Ik zou hoofdstuk 5 van je ws security docs goed bekijken: https://docs.oasis-open.o...-message-security-1.0.pdf

Geen ervaring mee maar ik vermoed dat je een security header moet meegeven met een username token en een password token.

Vermoedelijk iets zoals:

code:
1
2
3
4
5
6
7
8
<xxx:Envelope>
    <xxx:Header>
        <yyy:Security>
            <yyy:UsernameToken><yyy:Username>USERNAME</yyy:Username></yyy:UsernameToken>
            ....
        </yyy:Security>
    </xxx:Header>
</xxx:Envelope>


Waarbij je goed moet opletten dat de "xxx" en "yyy" namespaces overeenkomen met wat je in de hoofd tag meegeeft aan namespaces (ns="")
Weglaten van namespaces kan misschien ook.

Let ook goed op dat je de tags niet te vroeg afsluit, zoals je bij je voorbeeld hebt gedaan.
code:
1
2
3
<soapenv:Header/>    <------ DEZE IS AFGESLOTEN
      <Username>test123</Username>
      <Password>test123</Password>

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10-05 00:23

Janoz

Moderator Devschuur®

!litemod

7Sins schreef op maandag 12 februari 2024 @ 14:11:
[...]


Ik kan helaas geen kaas eten van die documentatie. Ik ben daar nog te nieuw voor.


Op het moment heb ik mijn soap request wat gestript tot het minimum. en vanaf daar geprobeerd te werken..

code:
1
2
3
4
5
6
7
8
9
10
11
12
POST https://voorbeeld.nl/WSapi/ReferenceDataService.svc HTTP/1.1
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.voorbeeld.nl/wsapi/2008/01/ReferenceDataServiceContract/GetProducts"

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.voorbeeld.nl/wsapi/2008/01">
   <soapenv:Header/>
      <Username>test123</Username>
      <Password>test123</Password>
   <soapenv:Body>
      <ns:ProductsRequest/>
   </soapenv:Body>
</soapenv:Envelope>
Geen kaas eten van die documentatie? In het tweede document staat rond regel 200 gewoon letterlijk een voorbeeld met username en password. EN dat lijkt in het geheel niet op het probeersel wat je hier hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Wanneer ik in SoapUI de header als volgt instel

code:
1
2
3
4
5
   <soapenv:Header>
   <Security>
            <UsernameToken><Username>Test</Username><:password>Test</password></UsernameToken>
        </Security>
   </soapenv:Header>


of

code:
1
2
3
4
5
   <soapenv:Header>
   <wsu:Security>
            <wsu:UsernameToken><wsu:Username>Test</wsu:Username><wsu:password>Test</wsu:password></wsu:UsernameToken>
        </wsu:Security>
   </soapenv:Header>


dan krijg ik alsnog een badrequest.

het spijt me maar ik kan die paginas over en over lezen, ik ben echt tever in het diepe aan het duiken.


ik heb hernieuwde google pogingen gedaan en ben gestuit op
https://docs.oracle.com/c...orials/authn_ws_user.html

Als ik dat probeer als volgt,
code:
1
2
3
4
5
6
7
8
9
<soapenv:Header>         
  <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext">
   <wsse:UsernameToken wsu:Id="test" 
       xmlns:wsu="http://schemas.xmlsoap.org/ws/2003/06/utility">
    <wsse:Username>test</wsse:Username>
    <wsse:Password Type="wsse:PasswordText">test</wsse:Password>
   </wsse:UsernameToken>
  </wsse:Security>
 </soapenv:Header>

dan krijg ik ook een HTTP 500.
code:
1
2
3
4
5
6
7
8
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <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="nl-NL">An error occurred when verifying security for the message.</faultstring>
      </s:Fault>
   </s:Body>
</s:Envelope>



Voor nu offtopic:
het script zelf schrijf ik in een interpreted language genaamd autohotkey. die heb ik voldoende onder de knie.

[ Voor 25% gewijzigd door 7Sins op 12-02-2024 16:00 ]


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Offtopic

[ Voor 98% gewijzigd door 7Sins op 12-02-2024 18:18 ]


Acties:
  • 0 Henk 'm!

  • CyBeRSPiN
  • Registratie: Februari 2001
  • Laatst online: 05:24

CyBeRSPiN

sinds 2001

En als je gewoon een Basic Authorization header meestuurt in de request?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 02:50

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

7Sins schreef op maandag 12 februari 2024 @ 15:58:
code:
1
2
3
4
5
   <soapenv:Header>
   <wsu:Security>
            <wsu:UsernameToken><wsu:Username>Test</wsu:Username><wsu:password>Test</wsu:password></wsu:UsernameToken>
        </wsu:Security>
   </soapenv:Header>
En die namespace (wsu) klopt?
Heb je niet ergens een werkend voorbeeld van dienstaanbieder?

Edit: Ho, wacht. Dit is toch niet het héle bericht dat je stuurt he? Ik neem aan dat je de rest voor het overzicht hebt weggelaten?

[ Voor 27% gewijzigd door RobIII op 12-02-2024 16:20 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Wat een gokwerk. En je hebt de wsu namespace ook half weggeknipt.
Tijd om een ander taakje op te pakken in afwachting van support door dataprovider.

[ Voor 20% gewijzigd door Voutloos op 12-02-2024 16:21 ]

{signature}


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
er staat in de hele documentatie niks over namespaces.
De namespace heb ik (gegokt) gevonden in de WSDL:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" 
[b]xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"[/b] 
xmlns:wsa10="http://www.w3.org/2005/08/addressing" 
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" 
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:tns="http://www.voorbeeld.nl/wsapi/2008/01" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" name="ReferenceDataService" 
targetNamespace="http://www.voorbeeld.nl/wsapi/2008/01">



Ik heb nog wat aangekloot en ik ben dichterbij gekomen!

Met deze header:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.voorbeeld.nl/wsapi/2008/01">
  <soapenv:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
      <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-1">
        <wsse:Username>testuser</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">hierkomtmijnwachtwoord</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </soapenv:Header>
   <soapenv:Body>
      <ns:ProductsRequest/>
   </soapenv:Body>
</soapenv:Envelope>


krijg ik de reply
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <s:Header>
      <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
         <u:Timestamp u:Id="_0">
            <u:Created>2024-02-12T15:41:17.967Z</u:Created>
            <u:Expires>2024-02-12T15:46:17.967Z</u:Expires>
         </u:Timestamp>
      </o:Security>
   </s:Header>
   <s:Body>
      <s:Fault>
         <faultcode>s:Client</faultcode>
         <faultstring xml:lang="nl-NL">Uw gebruikersnaam en/of wachtwoord is niet correct.</faultstring>
      </s:Fault>
   </s:Body>
</s:Envelope>

:+ :+

Ik denk dat ik er ben! :) :)

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Anoniem: 80910 schreef op zondag 11 februari 2024 @ 06:49:
Ik heb dit bij de kvk geprobeert en lukte het me bij soap ui uiteindelijk wel met credentials, maar terwijl ik het in php wilde hebben is me dat niet gelukt. De versie kwam niet overeen. Het is niet makkelijk, een '/' te veel of te weinig kan al een falend request opleveren. Ik vind soap helemaal niets, veel te ingewikkeld voor een simpele request. Maar dan heb je wel uniformiteit en gedateerde technologie. Een jwt token meesturen is vele malen eenvoudiger dan soap.

Dit document heb ik toen gebruikt. https://www.google.com/ur...Vaw3FkiCb_60vyBmrS38QaHpT
SOAP is dan inderdaad ook niet bedoelt voor 'simpele' requests, SOAP wordt (in mijn ervaring althans) vooral gebruikt bij transacties, waarin soms dus meerdere wijzigingen in 1x aan een partij kunnen worden doorgegeven.

Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
Overigens heeft dit hele debacle zich afgespeeld in SoapUI. Pas nu alles werkt verwerk ik het verder in Autohotkey.
Vandaar dat ik sowieso al niet in de titel neerzette om welke language het ging.

Acties:
  • 0 Henk 'm!

  • Flight77
  • Registratie: Januari 2009
  • Laatst online: 19:29
Mooi dat het gelukt is.

Ik vermoed dat je met iets minder xml namespace attributes ook wel een aardig eindje zou moeten komen, maar ik kan me goed voorstellen dat je zegt: dit werkt, we gaan door :D

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

7Sins schreef op maandag 12 februari 2024 @ 17:03:
Overigens heeft dit hele debacle zich afgespeeld in SoapUI. Pas nu alles werkt verwerk ik het verder in Autohotkey.
Vandaar dat ik sowieso al niet in de titel neerzette om welke language het ging.
offtopic:
Maar stiekem staat het er wel, SOAP is een subset van XML. :)

Kun je wel aangeven wat er nu exact mis ging/wat de oplossing was? Mocht iemand tegen dit topic aanlopen in de toekomst, kan diegene in elk geval ook jouw denkrichting/oplossing proberen. :)

[ Voor 19% gewijzigd door CH4OS op 13-02-2024 09:50 ]


Acties:
  • 0 Henk 'm!

  • 7Sins
  • Registratie: Februari 2013
  • Laatst online: 10-05 02:26
CH4OS schreef op dinsdag 13 februari 2024 @ 09:48:
[...]
offtopic:
Maar stiekem staat het er wel, SOAP is een subset van XML. :)

Kun je wel aangeven wat er nu exact mis ging/wat de oplossing was? Mocht iemand tegen dit topic aanlopen in de toekomst, kan diegene in elk geval ook jouw denkrichting/oplossing proberen. :)
Offtopic, het [autohotkey] stukje in de titel is naderhand toegevoegd en niet door mij.

Ik heb tussen alle passieve toetsenbordkladders het Antwoord gemarkeerd wat me de juiste richting op hielp.
Nabeschouwend waren er hier best wat lui die liever wat Wilde typen Dan lezen...
Afhankelijk van de inzet van de lezer kon er na OP of mijn 1e reactie Al met de juiste hulp aangezet worden. Maar liever reageert men hier Al te graag "ik heb het kunnen vinden in wat je aanlevert dus jij kan dat ook"

Acties:
  • +1 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10-05 00:23

Janoz

Moderator Devschuur®

!litemod

7Sins schreef op dinsdag 13 februari 2024 @ 12:52:

Nabeschouwend waren er hier best wat lui die liever wat Wilde typen Dan lezen...
Moet niet gekker worden... Ik heb VOOR JOU de documentatie gelezen omdat je dat zelf WEIGERDE TE DOEN en heb je LETTERLIJK het regelnummer gegeven van EXACT het voorbeeld dat jij nodig had.....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-05 17:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ok prima, dan is het hier ook klaar. Ik wil er niet meer woorden aan vuil maken dan nodig.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10-05 13:36

MueR

Admin Tweakers Discord

is niet lief

7Sins schreef op dinsdag 13 februari 2024 @ 12:52:
[...]
Ik heb tussen alle passieve toetsenbordkladders het Antwoord gemarkeerd wat me de juiste richting op hielp.
Nabeschouwend waren er hier best wat lui die liever wat Wilde typen Dan lezen...
Afhankelijk van de inzet van de lezer kon er na OP of mijn 1e reactie Al met de juiste hulp aangezet worden. Maar liever reageert men hier Al te graag "ik heb het kunnen vinden in wat je aanlevert dus jij kan dat ook"
De volgende keer dat je "de passieve toetsenbordkladders" om hulp komt vragen, die overigens geheel belangeloos hun tijd en energie investeren in jouw topic, moet je niet raar opkijken als je het antwoord krijgt dat je maar wat AI moet gebruiken, of niet zo'n luie donder moet zijn en de documentatie gewoon moet lezen. Man man man. Ga je schamen.

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1

Dit topic is gesloten.