# Wristband Framework-Agnostic JWT Validation SDK for Python
Wristband provides enterprise-ready auth that is secure by default, truly multi-tenant, and ungated for small businesses.
- Website: [Wristband Website](https://wristband.dev)
- Documentation: [Wristband Docs](https://docs.wristband.dev/)
For detailed setup instructions and usage guidelines, visit the project's GitHub repository.
- [Python JWT SDK - GitHub](https://github.com/wristband-dev/python-jwt)
## Details
This SDK provides secure JWT validation capabilities for applications using Wristband authentication. It is framework-agnostic and works with FastAPI, Flask, Django, and other Python web frameworks. The SDK follows OWASP security best practices and is supported for Python 3.9+. Key functionalities include:
- Extracting Bearer tokens from HTTP Authorization headers.
- Validating JWT signatures using Wristband's JWKS endpoint.
- Verifying token claims including issuer, expiration, and algorithm allowlisting to prevent common JWT vulnerabilities.
- Automatic JWKS key caching and rotation for optimal performance.
- Comprehensive error handling with detailed validation messages.
You can learn more about JWTs in Wristband in our documentation:
- [JWTs and Signing Keys](https://docs.wristband.dev/docs/json-web-tokens-jwts-and-signing-keys)
## Questions
Reach out to the Wristband team at <support@wristband.dev> for any questions regarding this SDK.
Raw data
{
"_id": null,
"home_page": null,
"name": "wristband-python-jwt",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "api, auth, authentication, authorization, fastapi, flask, django, jwt, multi-tenant, multi-tenancy, oauth, oidc, sdk, secure, security, sso, validation, wristband",
"author": null,
"author_email": "Wristband <support@wristband.dev>",
"download_url": "https://files.pythonhosted.org/packages/0d/18/0abcdc0b42dffbd5e111414bada9cf33cecc5fd5905d3b2b8ae7f9fbf227/wristband_python_jwt-0.1.0.tar.gz",
"platform": null,
"description": "# Wristband Framework-Agnostic JWT Validation SDK for Python\n\nWristband provides enterprise-ready auth that is secure by default, truly multi-tenant, and ungated for small businesses.\n\n- Website: [Wristband Website](https://wristband.dev)\n- Documentation: [Wristband Docs](https://docs.wristband.dev/)\n\nFor detailed setup instructions and usage guidelines, visit the project's GitHub repository.\n\n- [Python JWT SDK - GitHub](https://github.com/wristband-dev/python-jwt)\n\n\n## Details\n\nThis SDK provides secure JWT validation capabilities for applications using Wristband authentication. It is framework-agnostic and works with FastAPI, Flask, Django, and other Python web frameworks. The SDK follows OWASP security best practices and is supported for Python 3.9+. Key functionalities include:\n\n- Extracting Bearer tokens from HTTP Authorization headers.\n- Validating JWT signatures using Wristband's JWKS endpoint.\n- Verifying token claims including issuer, expiration, and algorithm allowlisting to prevent common JWT vulnerabilities.\n- Automatic JWKS key caching and rotation for optimal performance.\n- Comprehensive error handling with detailed validation messages.\n\nYou can learn more about JWTs in Wristband in our documentation:\n\n- [JWTs and Signing Keys](https://docs.wristband.dev/docs/json-web-tokens-jwts-and-signing-keys)\n\n## Questions\n\nReach out to the Wristband team at <support@wristband.dev> for any questions regarding this SDK.\n",
"bugtrack_url": null,
"license": null,
"summary": "Framework-agnostic Python SDK for validating JWT access tokens issued by Wristband.",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://docs.wristband.dev",
"Homepage": "https://wristband.dev",
"Repository": "https://github.com/wristband-dev/python-jwt"
},
"split_keywords": [
"api",
" auth",
" authentication",
" authorization",
" fastapi",
" flask",
" django",
" jwt",
" multi-tenant",
" multi-tenancy",
" oauth",
" oidc",
" sdk",
" secure",
" security",
" sso",
" validation",
" wristband"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "55ec2fed02076bb1cf039cf9a6673aef79770a59c49ffc3df6d213953fb7ffcc",
"md5": "ae6a934de4116318af2fc12a0b8a8954",
"sha256": "44ee3c8dc4783b12539edede0378d6e8b38b51d12d081cd0165599eaa13bf428"
},
"downloads": -1,
"filename": "wristband_python_jwt-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ae6a934de4116318af2fc12a0b8a8954",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 20605,
"upload_time": "2025-08-16T02:40:47",
"upload_time_iso_8601": "2025-08-16T02:40:47.217105Z",
"url": "https://files.pythonhosted.org/packages/55/ec/2fed02076bb1cf039cf9a6673aef79770a59c49ffc3df6d213953fb7ffcc/wristband_python_jwt-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0d180abcdc0b42dffbd5e111414bada9cf33cecc5fd5905d3b2b8ae7f9fbf227",
"md5": "3189c6ecddd1429d567733aa66eefc3e",
"sha256": "9be758ea3279568461034d2b3133986744f383401aff87faf75b0521bd26296b"
},
"downloads": -1,
"filename": "wristband_python_jwt-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "3189c6ecddd1429d567733aa66eefc3e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 33930,
"upload_time": "2025-08-16T02:40:48",
"upload_time_iso_8601": "2025-08-16T02:40:48.497758Z",
"url": "https://files.pythonhosted.org/packages/0d/18/0abcdc0b42dffbd5e111414bada9cf33cecc5fd5905d3b2b8ae7f9fbf227/wristband_python_jwt-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-16 02:40:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "wristband-dev",
"github_project": "python-jwt",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "wristband-python-jwt"
}