Metadata-Version: 2.4
Name: httpx2-negotiate-sspi
Version: 2.0.1
Summary: HTTPX Negotiate authentication using Windows SSPI.
Author-email: achapkowski <achapkowski@esri.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/achapkowski/httpx2_negotiate_sspi
Project-URL: Documentation, https://achapkowski.github.io/httpx2_negotiate_sspi
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Win32 (MS Windows)
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: httpx2<3,>=2.1.0
Requires-Dist: pywin32>=223; platform_system == "Windows"
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: coverage>=7; extra == "dev"
Provides-Extra: doc
Requires-Dist: sphinx; extra == "doc"
Requires-Dist: sphinx-rtd-theme; extra == "doc"
Dynamic: license-file

httpx2-negotiate-sspi
=====================

An implementation of HTTP Negotiate authentication for httpx2. This
module provides single-sign-on using Kerberos or NTLM using the Windows
SSPI interface.

This module supports Extended Protection for Authentication (aka Channel
Binding Hash), which makes it usable for services that require it,
including Active Directory Federation Services.

Usage
-----

```python
import httpx2
from httpx2_negotiate_sspi import HttpNegotiateAuth

with httpx2.Client(auth=HttpNegotiateAuth()) as client:
  response = client.get('https://iis.contoso.com')
```

Async clients use the same auth object:

```python
import httpx2
from httpx2_negotiate_sspi import HttpNegotiateAuth

async with httpx2.AsyncClient(auth=HttpNegotiateAuth()) as client:
  response = await client.get('https://iis.contoso.com')
```

Options
-------

  - `username`: Username.  
    Default: None

  - `password`: Password.  
    Default: None

  - `domain`: NT Domain name.  
    Default: '.' for local account.

  - `service`: Kerberos Service type for remote Service Principal
    Name.  
    Default: 'HTTP'

  - `host`: Host name for Service Principal Name.  
    Default: Extracted from request URI

  - `delegate`: Indicates that the user's credentials are to be delegated to the server.
    Default: False


If username and password are not specified, the user's default
credentials are used. This allows for single-sign-on to domain resources
if the user is currently logged on with a domain account.
