Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
ac24ef7
feat: add Multiple Custom Domains (MCD) support and fix JWT verification
kishore7snehil Feb 2, 2026
1164848
Bump poetry version from latest to 2.2.1 in test workflow
kishore7snehil Feb 2, 2026
2646682
Fix linting errors
kishore7snehil Feb 2, 2026
307000b
test: improve cache verification in OIDC metadata and JWKS tests
kishore7snehil Feb 2, 2026
3f68c3c
refactor: rename cache size variable and reorganize test comments
kishore7snehil Feb 3, 2026
2e0ae17
chore: add cryptography package to Snyk license ignore list
kishore7snehil Feb 3, 2026
3b131d8
Merge remote-tracking branch 'origin/main' into feat/mcd-support
kishore7snehil Feb 6, 2026
daa6d35
Implement normalized issuer validation and add related tests
kishore7snehil Feb 8, 2026
74329ab
refactor: remove unused jwt import from test_server_client.py
kishore7snehil Feb 9, 2026
073c38b
refactor: remove requirement comments for OIDC metadata and JWKS caching
kishore7snehil Feb 11, 2026
75a8531
feat: improve caching mechanism and add more examples to the example doc
kishore7snehil Feb 13, 2026
0eb64b4
feat: enhance Multiple Custom Domains (MCD) support with dynamic doma…
kishore7snehil Feb 25, 2026
f8d8470
fix: update type hint for audience parameter in _verify_and_decode_jw…
kishore7snehil Feb 25, 2026
283377f
feat: add DOMAIN_MISMATCH error code for session domain validation in…
kishore7snehil Feb 26, 2026
e40942d
feat: implement domain validation for backchannel logout and enhance …
kishore7snehil Feb 27, 2026
1c5f2d8
chore: fix for review comments (set-1)
kishore7snehil Mar 3, 2026
a9debdd
fix: scoped logout, backchannel logout
kishore7snehil Mar 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,4 @@ setup.py
test.py
test-script.py
.coverage
coverage.xml

coverage.xml
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,34 @@ print(response.access_token)

For more details and examples, see [examples/CustomTokenExchange.md](examples/CustomTokenExchange.md).

### 5. Multiple Custom Domains (MCD)

For applications that use multiple custom domains on the same Auth0 tenant, pass a domain resolver function instead of a static domain string:

```python
from auth0_server_python.auth_server.server_client import ServerClient
from auth0_server_python.auth_types import DomainResolverContext

async def domain_resolver(context: DomainResolverContext) -> str:
host = context.request_headers.get('host', '').split(':')[0]
domain_map = {
"acme.yourapp.com": "acme.auth0.com",
"globex.yourapp.com": "globex.auth0.com",
}
return domain_map.get(host, "default.auth0.com")

auth0 = ServerClient(
domain=domain_resolver, # Callable enables MCD mode
client_id='<AUTH0_CLIENT_ID>',
client_secret='<AUTH0_CLIENT_SECRET>',
secret='<AUTH0_SECRET>',
)
```

The SDK handles per-domain OIDC discovery, JWKS fetching, issuer validation, and session isolation automatically. Static string domains continue to work unchanged.

For more details and examples, see [examples/MultipleCustomDomains.md](examples/MultipleCustomDomains.md).

## Feedback

### Contributing
Expand Down
Loading