Skip to main content



Create a centralized Authentication and Authorization token server. Easily secure FastAPI endpoints based on Users, Groups, Roles or Permissions to minimize database access requirements of Auth.

Documentation Status PyPI version

Documentation

https://easyauth.readthedocs.io/en/latest/

Key Features

  • Centralized Auth - Single location for Users & Permissions to share across apps
  • Granular Endpoint Security - Verify user identity, and define explicitly who and what each user or groups of users may access
  • Admin GUI - easy management of users, permissions, tokens, oauth and more!
  • Advanced JWT - Token Based Client authorization with built in invalidation capabilities
  • Google Oauth - Easy to configure google login
  • Integrated Login & Cookie Management - Users are not just authenticated and authorized, they are re-directed on token expiration to login pages via cookie system and sent back to last location afterwards

Quick Start

$ virtualenv -p <python3.X> easy-auth-env
$ source easy-auth-env/bin/activate

(easy-auth) $ pip install easy-auth[server]

(easy-auth) $ pip install easy-auth[client] # without db

Basic Server

Configure require env variables via a .json

$ cat > server_env.json <<EOF
{
    "DB_TYPE": "sqlite",
    "DB_NAME": "auth",
    "ISSUER": "EasyAuth",
    "SUBJECT": "EasyAuthAuth",
    "AUDIENCE": "EasyAuthApis",
    "KEY_PATH": "/my_key-location",
    "KEY_NAME": "test_key"
}
EOF
#test_server.py
from fastapi import FastAPI

from easyauth.server import EasyAuthServer

server = FastAPI()

server.auth = EasyAuthServer.create(
    server,
    '/auth/token',
    auth_secret='abcd1234',
    admin_title='EasyAuth - Company',
    admin_prefix='/admin',
    env_from_file='server_env.json'
)

Start Sever

uvicorn --host 0.0.0.0 --port 8330 test_server:server

Basic Client

#test_client.py
from fastapi import FastAPI

from easyauth.client import EasyAuthClient
from easyauth import get_user

server = FastAPI()

server.auth = EasyAuthClient.create(
    server,
    token_server='0.0.0.0',
    token_server_port=8090,
    auth_secret='abcd1234',
    default_permissions={'groups': ['users']}
)

# grants access to users matching default_permissions
@server.auth.get('/default')
async def default():
    return f"I am default"

# grants access to only specified users
@server.auth.get('/', users=['jane'])
async def root():
    return f"I am root"

# grants access to members of 'users' or 'admins' group.
@server.auth.get('/groups', groups=['users', 'admins'])
async def groups(user: str = get_user()):
    return f"{user} is in groups"

# grants access to all members of 'users' group
# or a groups with role of 'basic' or advanced
@server.auth.get('/roles', roles=['basic', 'advanced'], groups=['users'])
async def roles():
    return f"Roles and Groups"

# grants access to all members of groups with a roles granting 'BASIC_CREATE'
@server.auth.get('/actions', actions=['BASIC_CREATE'])
async def action():
    return f"I am actions"

Server

See 0.0.0.0:8330/docs

GUI

Client

Release files for easy-auth 2.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for easy-auth 2.0.3
File Interpreter ABI Platform
easy_auth-2.0.3-py3-none-any.whl Python 3 none any Details

Release files / easy_auth-2.0.3-py3-none-any.whl

Download URL easy_auth-2.0.3-py3-none-any.whl
Size 34.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c499c92fda004179a561da0845a2357e21bca02f57628b6116b1d57cc94c095
BLAKE2b-256 checksum
How to use checksums
b30989549a4a46fe7074b5053ef456d8553aa69fa10ca10ebe01c68bf8a06d79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.18

Release history Release notifications | RSS feed

This release

2.0.3 This release

1 release file

2.0.2

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.0.30

1 release file

1.0.29

1 release file

1.0.28

1 release file

1.0.27

1 release file

1.0.26

1 release file

1.0.25

1 release file

1.0.24

1 release file

1.0.23

1 release file

1.0.22

1 release file

1.0.21

1 release file

1.0.20

1 release file

1.0.19

1 release file

1.0.18

1 release file

1.0.17

1 release file

1.0.16

1 release file

1.0.15

1 release file

1.0.14

1 release file

1.0.13

1 release file

1.0.12

1 release file

1.0.11

1 release file

1.0.10

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

0.148

1 release file

0.147

1 release file

0.146

1 release file

0.145

1 release file

0.144

1 release file

0.143

1 release file

0.142

1 release file

0.141

1 release file

0.140

1 release file

0.139

1 release file

0.138

1 release file

0.137

1 release file

0.136

1 release file

0.135

1 release file

0.134

1 release file

0.133

1 release file

0.132

1 release file

0.131

1 release file

0.130

1 release file

0.129

1 release file

0.128

1 release file

0.127

1 release file

0.126

1 release file

0.125

1 release file

0.124

1 release file

0.123

1 release file

0.122

1 release file

0.121

1 release file

0.120

1 release file

0.119

1 release file

0.118

1 release file

0.117

1 release file

0.116

1 release file

0.115

1 release file

0.114

1 release file

0.113

1 release file

0.112

1 release file

0.111

1 release file

0.110

1 release file

0.109

1 release file

0.108

1 release file

0.107

1 release file

0.106

1 release file

0.105

1 release file

0.104

1 release file

0.103

1 release file

0.102

1 release file

0.101

1 release file

0.100

1 release file

0.2.1

1 release file

0.0.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page