Skip to main content

Librairie d'authentification pour les apis WT

Project description

README.md

wt-authlib

Librairie d'authentification pour l'api wt_user. Cette librairie permet de sécuriser un projet FastAPI. Seules les personnes avec un compte WT pourront accéder l'API protégée. Cette librairie se connecte à la base de donnée associée à wt_user pour récupérer les settings, les endpoints etc

Fonctionnalités

  • Permet de s'identifier à WT et récupérer un Bearer
  • Décodage et validation des tokens Bearer pour les endpoints ou routers protégés
  • Intégration facile avec FastAPI via Depends

Installation

uv pip install wt_authlib

Initialisation

Une fois installée, il est essentiel d'initialiser UserApi dans un lifespan FastAPI

from contextlib import asynccontextmanager
from wt_authlib.user_api_client import UserApiClient

@asynccontextmanager
async def lifespan(_: FastAPI):
	UserApiClient.init(
		host="url de la base de données de wt_user",
		port="port la base de données de wt_user",
		username="username admin de la base de données de wt_user",
		password="passwaord admin de la base de données de wt_user",
	)
	yield

app = FastAPI(lifespan=lifespan)

Sécurisation

il faut ajouter la méthode validate_user comme dépendance (Depends) aux endpoints ou routeur

exemple ajout router

from fastapi import APIRouter, Depends
from wt_authlib.fastapi_depends import validate_user

routeur = APIRouter()
routeur.include_router(
    document.router,
	dependencies=[Depends(validate_user)]
)

exemple ajout endpoint

from wt_authlib import validate_user

app = FastAPI()

@app.get("/private", dependencies=[Depends(validate_user)])
async def private_route():
    return {"message": "Bienvenue, utilisateur authentifié"}

Login

Une fois l'api sécurisé, il est est nécessaire de se loguer pour recevoir un Bearer token depuis wt_user. Utilisez la methode UserApiClient.login() avec les credentials pour recevoir un token.

Exemple avec un endpoint Fastapi

from wt_authlib.user_api_client import UserApiClient
from wt_authlib.errors import UserApiException

@router.post("/login")
async def login(username: str, password: str):
    try:
        return await UserApiClient.login(username, password)
    except UserApiException as e:
        raise HTTPException(status_code=e.status_code, detail=e.message)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wt_authlib-0.1.6.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wt_authlib-0.1.6-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file wt_authlib-0.1.6.tar.gz.

File metadata

  • Download URL: wt_authlib-0.1.6.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for wt_authlib-0.1.6.tar.gz
Algorithm Hash digest
SHA256 122bc015307d377069f154bb72414e7f6cead09ec3c536b25325baed4e6203c9
MD5 2396b3fd10acbe6af79eaa536513a5fa
BLAKE2b-256 34f16d15c460462c9d8854b82c6dc12e417da45f1ac397ebec76a55e6eebf0e6

See more details on using hashes here.

File details

Details for the file wt_authlib-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: wt_authlib-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for wt_authlib-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0b64df140466c57e173f95164f9c477b1ad8f56338af2e8671197185b88e3129
MD5 15cc3f3dc99831ae6babece6ee94d104
BLAKE2b-256 479024b206cdf66381fd20190328ab4b6dc0d8fb26357dd66c26ea67f7f4ff29

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page