Getting Started
httpx2-negotiate-sspi is a Windows-only authentication helper for
httpx2 clients that need to talk to HTTP services protected by
Negotiate or NTLM.
Requirements
Windows runtime with SSPI support through
pywin32Python 3.10 or newer
A server that challenges with
WWW-Authenticate: NegotiateorWWW-Authenticate: NTLM
Installation
Install the package from PyPI:
pip install httpx2-negotiate-sspi
Quick start
Use the current Windows logon session for single sign-on:
import httpx2
from httpx2_negotiate_sspi import HttpNegotiateAuth
with httpx2.Client(auth=HttpNegotiateAuth()) as client:
response = client.get("https://iis.contoso.com")
response.raise_for_status()
When to use explicit credentials
Pass explicit credentials when the current Windows logon account is not the identity that should authenticate to the remote service:
import getpass
import httpx2
from httpx2_negotiate_sspi import HttpNegotiateAuth
auth = HttpNegotiateAuth(
"svc-http-client",
getpass.getpass(),
"CONTOSO",
)
with httpx2.Client(auth=auth) as client:
response = client.get("https://iis.contoso.com")
response.raise_for_status()
Both username and password must be provided for explicit credentials to
take effect. If either value is omitted, the current Windows credentials remain
in use.
Async quick start
import asyncio
import httpx2
from httpx2_negotiate_sspi import HttpNegotiateAuth
async def main() -> None:
async with httpx2.AsyncClient(auth=HttpNegotiateAuth()) as client:
response = await client.get("https://iis.contoso.com")
response.raise_for_status()
asyncio.run(main())