Pynchia
Pynchia

Reputation: 11580

Preemptive authentication with Zeep and requests

I need to talk to a SOAP server which requires "preemptive authentication" (it uses BasicAuth).

I have no idea of how to configure my zeep client to make it behave accordingly.

As it says here, the SoapUI tool can be configured to use "preemptive authentication"

Can anyone please help me achieve the same? (either configuring zeep or requests)

Here is my code, which is pretty standard:

session = Session()
session.verify = False  # ignore certificate
session.auth = HTTPBasicAuth(user, pwd)

transport = Transport(session=session)
client = Client(wsdl, transport=transport)
# ...
response = client.service.Operation(**params)

The above fails authenticating and ends up with an SSL error, which is expected.

Any help is much appreciated. Thank you

Upvotes: 1

Views: 731

Answers (1)

karski
karski

Reputation: 41

In theory, you should be able to do this by creating a session and modifying the headers directly. This way, the header will be sent with the original request instead of using the auth behavior of waiting for a challenge.

import requests

session = requests.Session()
session.headers['Authorization'] = 'Basic ' + <your 64-bit encoded user:pass>
transport = zeep.Transport(session=session)
client = zeep.Client(wsdl=soapURI,transport=transport)

Upvotes: 1

Related Questions