IIRC if you're using BP 5.* there might be a bug, where you can't really authorize on Webservice, if BP uses SSO.
If you're on BP 6+, it's easy - use simple HTTP Auth.Credentials: account, which is able to log into BP via SSO.
E.g. To get work item status via Python, I've used this:
from requests.auth import HTTPBasicAuth
from requests import Session
from zeep import Client
from zeep.transports import Transport
session = Session()
session.auth = HTTPBasicAuth(""[Domain]\\[User]"", ""[Password]"")
client = Client('http://resource_pc:port/ws/GetWorkItemStatus?wsdl', transport=Transport(session=session))
print(client.service.GetWorkItemStatus('work-item-id-goes-here'))