Toon posts:

[C# / SOAP-client] Proxy class bevat niet alle functies?

Pagina: 1
Acties:
  • 893 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo

Voor een nieuw project maak ik gebruik van de web-services van de RSZ.
Om de business web-services van de RSZ te kunnen gebruiken moet je eerst een token verkrijgen van hun security service. ( SAML assertion ).

Als ik SOAPUI gebruik kijg ik de token zonder problemen. Het lukt omdat ik in de GUI van SOAPUI een keystore ( *.p12 ) kan meegeven, en zo die request kan ondertekenen.

Dit is de request. Maar volgens mij moet SOAPUI daar nog tags aan toevoegen op basis van de instellingen die ik maak in de GUI.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<wst:RequestSecurityToken Context="abc" xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
<wst:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</wst:TokenType>
<wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType>
<wst:Claims Dialect="http://schemas.xmlsoap.org/ws/2006/12/authorization/authclaims">
<auth:ClaimType Uri="urn:be:smals:expeditor:number" xmlns:auth="http://schemas.xmlsoap.org/ws/2006/12/authorization">
<auth:Value>108395</auth:Value>
</auth:ClaimType>
</wst:Claims>
</wst:RequestSecurityToken>
</soap:Body>
</soap:Envelope>


Maar hoe kan ik nu de mijn SOAP requests ondertekenen vanuit .NET? Als ik de WSDL-file als service referentie aan m'n project toe voeg, dan zie ik nergens een functie om een digitale handtekening toe te voegen.

Als ik de WSDL van business service aan m'n project toe voeg, dan zou ik een request moeten opmaken als volgt:

<types:PresenceRegistratio>
<date></date>
<Inss>/inss>
...
</types:PresenceRegistration>


Hoewel als ik de intellisence van de proxy class bekijk dan heb ik helemaal geen toegang tot dergelijke functies. Kan het zijn dat ik de SOAP xml volledig manueel moet opmaken en doorsturen?
Is het zo een SOAP service enkel aangesproken kan worden via een Service Reference?

Alvast bedankt voor de hulp.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Niemand die me hierbij kan helpen?

Acties:
  • 0 Henk 'm!

  • empheron
  • Registratie: Mei 2004
  • Laatst online: 10-03 14:26
De vraag is of je door simpel de WSDL toe te voegen een fatsoenlijke binding krijgt. Gezien je SAML assertion gebruikt zou ik een wsFederationHttpBinding verwachten. De token zou je dan toevoegen aan de ClientCredentials van jouw client (proxy).

Heb je overigens een platgeslagen WSDL, of zitten de XSD's er los bij?

Ik neem aan dat je de MSDN al eens doorgelezen hebt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dag Empheron

Eerst en vooral bedankt voor uw reactie.
Ik heb inderdaad MSDN al doorgelezen en zelfs nog veel meer webpagina's. Je komt echter verschillende manieren van werken tegen en die zijn nooit echt helemaal duidelijk voor iemand als ik die niet veel ervaring heeft met SOAP services die beveiligd zijn op die manier.

Ik heb zelf wel al veel services gemaakt, die moet je dan gewoon als service ref toevoegen aan een client. Je maakt een instantie van je proxy class en je kan simpelweg gewoon de functie oproepen en een aantal parameters mee geven.

Dit hier is echter andere koek, veel geavanceerder.

Naast de WSDL zitten er inderdaad ook XSD schema's, maar die kan ik toch niet aan m'n visual studio project toevoegen denk ik?

Ik zal me alvast wat meer verdiepen op wsFederationHttpBinding en in die richting verder zoeken. Bedankt voor de tip.

Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 29-09 14:10
Het zou ook goed kunnen dat het wel een geldige WSDL is maar dat svcutil toch niet helemaal de juiste service genereert. Vooral als je te maken gaat krijgen met authentication scheme's en dergelijke wil je WCF service binding generatie nog wel eens fout gaan. Niet dat het niet werkt, maar je krijgt gewoonweg niet de juiste.

Dit ligt niet per definitie aan WCF maar aan het feit dat de standaard voor een WSDL in respect tot beveiliging soms iets te los is gedefinieerd. WSE-* is een extensie bovenop SOAP, en helaas zijn er soms subtiele verschillen in de implementatie hiervan tussen de verschillende platformen (.net/java/other).

Bottomline is dat er een kans is dat je naast de standaard instellingen welke je moet maken voor een wsFederationBinding je nog wat dingen moet customizen in je binding.

Maar ga eerst maar eens kijken of je een standaard federationbinding ingericht krijgt. Hierover is echt genoeg te vinden op msdn e.d.
Dus dat je je binding configureert om met een STS service te praten om een token op te halen, en daarna je token meegeeft aan je service call. Dat verhaal.

Nogmaals, genoeg over te vinden als je googled op "wcf saml token". En ik hoop voor jou dat het met de standaard config opties het aan de praat krijgt ;)

  • empheron
  • Registratie: Mei 2004
  • Laatst online: 10-03 14:26
Je token hang je overigens bij de clientcredentials, maar hoe en wanneer hangt af van de implementatie. Doe je dat dan krijg je automagisch extra header definities in je soap. Echter, ik vind het een beetje raar dat ze in het voorbeeldje in de body terecht komen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dag jongens!
Bedankt iedereen voor de inbreng maar ik het is me niet gelukt om die webservices vanuit .NET aan te spreken.

In plaats daarvan heb ik de services vanuit java aangesproeken en via een "Bridge" kan ik vanuit .NET mijn functies in de JAR aanspreken.

Misschien een vreemde manier van werken maar het werkt en nu haal ik misschien nog mijn deadline. :-)

Acties:
  • 0 Henk 'm!

  • StevenDeRoover
  • Registratie: Mei 2019
  • Laatst online: 01-08 13:19
Hoi iedereen

Ik weet dat dit een oude thread is, maar ik moet voor mijn job communiceren met de WCF SOAP van RSZ, nl. om de CheckInAtWork services aan te spreken.

Via SoapUI kan ik een connectie maken, maar een token verkrijgen lukt me niet.

In .NET heb ik volgens mij de juiste request XML, maar de response blijft "Service call not authenticated".

Heeft er iemand ervaring met de services van RSZ?

Mvg
Steven De Roover

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
@StevenDeRoover het is niet de bedoeling om een compleet nieuwe vraag in een oud topic te gooien. Je kunt prima een nieuw topic openen, maar lees dan wel even de Quickstart en het Devschuur® Beleid, want we verwachten wel dat je iets meer informatie geeft over wat je allemaal zelf al geprobeerd hebt zodat we je ook effectief kunnen helpen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1

Dit topic is gesloten.