Hub Python Library documentation

OAuth et FastAPI

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

OAuth et FastAPI

OAuth est un standard ouvert pour la délégation d'accès, couramment utilisé pour accorder aux applications un accès limité aux informations d'un utilisateur sans exposer ses identifiants. Combiné à FastAPI, il vous permet de créer des API sécurisées qui permettent aux utilisateurs de se connecter à l'aide de fournisseurs d'identité externes tels que Google ou GitHub. Dans un scénario habituel :

  • FastAPI définit les points de terminaison de l'API et gère les requêtes HTTP.
  • OAuth est intégré à l'aide de bibliothèques telles que fastapi.security ou d'outils externes tels que Authlib.
  • Lorsqu’un utilisateur souhaite se connecter, FastAPI le redirige vers la page de connexion du fournisseur OAuth.
  • Après une connexion réussie, le fournisseur redirige avec un jeton.
  • FastAPI vérifie ce jeton et l’utilise pour autoriser l’utilisateur ou récupérer les données de son profil.

Cette approche permet d'éviter de manipuler directement les mots de passe et de confier la gestion des identités à des fournisseurs de confiance.

Intégration OAuth de Hugging Face dans FastAPI

Ce module fournit des outils pour intégrer l’OAuth de Hugging Face dans une application FastAPI. Il permet l’authentification des utilisateurs via la plateforme Hugging Face, incluant un comportement simulé pour le développement local et le flux OAuth réel pour les Spaces.

Vue d'ensemble d'OAuth

La fonction attach_huggingface_oauth ajoute des points de terminaison de connexion, de déconnexion et de rappel à votre application FastAPI. Utilisée dans un Space, elle se connecte au système OAuth de Hugging Face. Utilisée localement, elle injecte un utilisateur simulé. Cliquez ici pour en savoir plus sur l’ajout d’une option de connexion avec HF à votre Space

Comment l'utiliser ?

from huggingface_hub import attach_huggingface_oauth, parse_huggingface_oauth
from fastapi import FastAPI, Request

app = FastAPI()
attach_huggingface_oauth(app)

@app.get("/")
def greet_json(request: Request):
    oauth_info = parse_huggingface_oauth(request)
    if oauth_info is None:
        return {"msg": "Not logged in!"}
    return {"msg": f"Hello, {oauth_info.user_info.preferred_username}!"}

Vous pourriez également être intéressé par un exemple pratique qui illustre OAuth en action. Pour une implémentation plus complète, consultez l'Espace medoidai/GiveBackGPT qui met en œuvre l'OAuth de HF dans une application à grande échelle.

attach_huggingface_oauth

huggingface_hub.attach_huggingface_oauth

< >

( app: fastapi.FastAPIroute_prefix: str = '/' )

Ajoutez des points de terminaison OAuth à une application FastAPI pour permettre la connexion OAuth avec Hugging Face.

Comment l'utiliser :

  • Appelez cette méthode sur votre application FastAPI pour ajouter les points de terminaison OAuth.
  • Dans vos gestionnaires de route, appelez parse_huggingface_oauth(request) pour récupérer les informations OAuth.
  • Si l'utilisateur est connecté, un objet OAuthInfo contenant les informations de l'utilisateur est renvoyé. Sinon, None est renvoyé.
  • Dans votre application, assurez-vous d'ajouter des liens vers /oauth/huggingface/login et /oauth/huggingface/logout pour que l'utilisateur puisse se connecter et se déconnecter.

Exemple :

from huggingface_hub import attach_huggingface_oauth, parse_huggingface_oauth

# Create a FastAPI app
app = FastAPI()

# Add OAuth endpoints to the FastAPI app
attach_huggingface_oauth(app)

# Add a route that greets the user if they are logged in
@app.get("/")
def greet_json(request: Request):
    # Retrieve the OAuth info from the request
    oauth_info = parse_huggingface_oauth(request)  # e.g. OAuthInfo dataclass
    if oauth_info is None:
        return {"msg": "Not logged in!"}
    return {"msg": f"Hello, {oauth_info.user_info.preferred_username}!"}

parse_huggingface_oauth

huggingface_hub.parse_huggingface_oauth

< >

( request: fastapi.Request )

Retourne les informations d'un utilisateur connecté sous forme d'objet OAuthInfo.

Pour la flexibilité et la pérennité, cette méthode est très tolérante dans son analyse et ne lève pas d’erreurs. Les champs manquants sont définis sur None sans avertissement.

Retourne None si l'utilisateur n'est pas connecté (aucune information dans le cookie de session).

Voir attach_huggingface_oauth() pour un exemple d’utilisation de cette méthode.

OAuthOrgInfo

classe huggingface_hub.OAuthOrgInfo

< >

( sub: strname: strpreferred_username: strpicture: strplan: str | None = Nonecan_pay: bool | None = Nonerole_in_org: str | None = Nonesecurity_restrictions: list[typing.Literal['ip', 'token-policy', 'mfa', 'sso']] | None = None )

Paramètres

  • sub (str) — Identifiant unique de l'organisation. Champ OpenID Connect.
  • name (str) — Le nom complet de l’organisation. Champ OpenID Connect.
  • preferred_username (str) — Nom d’utilisateur de l’organisation. Champ OpenID Connect.
  • picture (str) — URL de l’image de profil de l’organisation. Champ OpenID Connect.
  • plan (str, facultatif) — Le plan de l’organisation (par ex. « enterprise », « team »). Champ Hugging Face.
  • can_pay (Optional[bool], facultatif) — Indique si l’organisation a configuré un moyen de paiement. Champ Hugging Face.
  • role_in_org (Optional[str], facultatif) — Le rôle de l’utilisateur au sein de l’organisation. Champ Hugging Face.
  • security_restrictions (Optional[list[Literal["ip", "token-policy", "mfa", "sso"]]], facultatif) — Tableau des restrictions de sécurité que l’utilisateur n’a pas encore configurées pour cette organisation. Valeurs possibles : « ip », « token-policy », « mfa », « sso ». Champ Hugging Face.

Informations sur une organisation liée à un utilisateur connecté via OAuth.

OAuthUserInfo

classe huggingface_hub.OAuthUserInfo

< >

( sub: strname: strpreferred_username: stremail_verified: bool | Noneemail: str | Nonepicture: strprofile: strwebsite: str | Noneis_pro: boolcan_pay: bool | Noneorgs: list[huggingface_hub._oauth.OAuthOrgInfo] | None )

Paramètres

  • sub (str) — Identifiant unique de l'utilisateur, même en cas de renommage. Champ OpenID Connect.
  • name (str) — Le nom complet de l’utilisateur. Champ OpenID Connect.
  • preferred_username (str) — Nom d’utilisateur de l’utilisateur. Champ OpenID Connect.
  • email_verified (Optional[bool], facultatif) — Indique si l’adresse e-mail de l’utilisateur est vérifiée. Champ OpenID Connect.
  • email (Optional[str], facultatif) — L’adresse e-mail de l’utilisateur. Champ OpenID Connect.
  • picture (str) — URL de l’image de profil de l’utilisateur. Champ OpenID Connect.
  • profile (str) — L’URL du profil de l’utilisateur. Champ OpenID Connect.
  • website (Optional[str], facultatif) — L’URL du site Web de l’utilisateur. Champ OpenID Connect.
  • is_pro (bool) — Indique si l'utilisateur est un utilisateur pro. Champ Hugging Face.
  • can_pay (Optional[bool], facultatif) — Indique si l'utilisateur a configuré un moyen de paiement. Champ Hugging Face.
  • orgs (Optional[list[OrgInfo]], facultatif) — Liste des organisations dont l'utilisateur est membre. Champ Hugging Face.

Informations sur un utilisateur connecté via OAuth.

OAuthInfo

classe huggingface_hub.OAuthInfo

< >

( access_token: straccess_token_expires_at: datetimeuser_info: OAuthUserInfostate: str | Nonescope: str )

Paramètres

  • access_token (str) — Le jeton d'accès.
  • access_token_expires_at (datetime.datetime) — Date d'expiration du jeton d'accès.
  • user_info (OAuthUserInfo) — Les informations de l'utilisateur.
  • state (str, facultatif) — État transmis au fournisseur OAuth dans la requête d’origine adressée au fournisseur OAuth.
  • scope (str) — Portée accordée.

Informations sur la connexion OAuth.

Update on GitHub