pyauth0

Test Coverage Status PyPI version

Python utilities for Auth0.

Install

pip install pyauth0

Usage

Get a machine-to-machine token

import asyncio
import httpx
from pyauth0 import TokenProvider

token_provider = TokenProvider(
    issuer="your-domain.auth0.com",
    audience="https://api.your-domain.com",
    client_id="1234",
    client_secret="secret"
)


async def main():
    authorization = await token_provider.get_authorization()
    async with httpx.AsyncClient() as client:
        # Machine to machine request
        response = await client.get(
            "https://api.your-domain.com",
            headers={"authorization": authorization},
        )
        print(response.content)


asyncio.run(main())

Verify a token

import asyncio

from pyauth0 import TokenVerifier, Auth0Error

token_verifier = TokenVerifier(
    issuer="your-domain.auth0.com",
    audience="https://api.your-domain.com",
    jwks_cache_ttl=60,  # optional
)


async def main():
    try:
        decoded_token = await token_verifier.verify(
            "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...."
        )
    except Auth0Error as error:
        status_code = error.status_code  # suggested status code (401 or 403)
        code = error.code  # auth0 error code (example "token_expired")
        description = error.description  # auth0 error description (example "Token is expired.")
        raise error

    claim_value = decoded_token.payload.get("http://your-domain.com/claim_name", "default value")


asyncio.run(main())

Contribute

If you want to contribute, open a GitHub Issue and motivate your request.