Hub Python Library documentation

OAuth e FastAPI

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

OAuth e FastAPI

OAuth é um padrão aberto para delegação de acesso, comumente usado para conceder a aplicativos acesso limitado às informações de um usuário sem expor suas credenciais. Quando combinado com FastAPI, permite construir APIs seguras que permitem que os usuários façam login usando provedores de identidade externos, como Google ou GitHub. Em um cenário usual:

  • O FastAPI definirá os endpoints da API e tratará as requisições HTTP.
  • O OAuth é integrado usando bibliotecas como fastapi.security ou ferramentas externas como Authlib.
  • Quando um usuário deseja fazer login, o FastAPI redireciona-o para a página de login do provedor OAuth.
  • Após o login bem-sucedido, o provedor redireciona de volta com um token.
  • O FastAPI verifica esse token e o usa para autorizar o usuário ou buscar os dados do perfil do usuário.

Essa abordagem ajuda a evitar o manuseio direto de senhas e delega o gerenciamento de identidade a provedores confiáveis.

Integração do OAuth do Hugging Face no FastAPI

Este módulo fornece ferramentas para integrar o OAuth do Hugging Face em uma aplicação FastAPI. Ele permite a autenticação de usuários usando a plataforma Hugging Face, incluindo comportamento simulado para desenvolvimento local e fluxo OAuth real para Spaces.

Visão geral do OAuth

A função attach_huggingface_oauth adiciona endpoints de login, logout e callback ao seu aplicativo FastAPI. Quando usada em um Space, ela se conecta ao sistema de OAuth do Hugging Face. Quando usada localmente, ela injeta um usuário simulado. Clique aqui para saber mais sobre adicionar uma opção de Sign-In with HF ao seu Space

Como usá-lo?

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}!"}

Você também pode se interessar por um exemplo prático que demonstra o OAuth em ação. Para uma implementação mais abrangente, confira o Space medoidai/GiveBackGPT, que implementa o OAuth do HF em uma aplicação em escala completa.

attach_huggingface_oauth

huggingface_hub.attach_huggingface_oauth

< >

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

Adicione endpoints de OAuth a um aplicativo FastAPI para habilitar o login com OAuth no Hugging Face.

Como usar:

  • Chame este método no seu aplicativo FastAPI para adicionar os endpoints de OAuth.
  • Dentro dos seus manipuladores de rota, chame parse_huggingface_oauth(request) para recuperar as informações de OAuth.
  • Se o usuário estiver conectado, um objeto OAuthInfo é retornado com as informações do usuário. Caso contrário, None é retornado.
  • No seu aplicativo, certifique-se de adicionar links para /oauth/huggingface/login e /oauth/huggingface/logout para que o usuário faça login e logout.

Exemplo:

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 )

Retorna as informações de um usuário conectado como um objeto OAuthInfo.

Para flexibilidade e preparação para o futuro, este método é muito flexível na análise e não gera erros. Campos ausentes são definidos como None sem um aviso.

Retorna None se o usuário não estiver conectado (sem informações no cookie de sessão).

Veja attach_huggingface_oauth() para um exemplo de como usar este método.

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 )

Parâmetros

  • sub (str) — Identificador único para a organização. Campo do OpenID Connect.
  • name (str) — O nome completo da organização. Campo do OpenID Connect.
  • preferred_username (str) — Nome de usuário da organização. Campo do OpenID Connect.
  • picture (str) — URL da foto de perfil da organização. Campo do OpenID Connect.
  • plan (str, opcional) — O plano da organização (por exemplo, “enterprise”, “team”). Campo do Hugging Face.
  • can_pay (Optional[bool], opcional) — Indica se a organização possui um método de pagamento configurado. Campo do Hugging Face.
  • role_in_org (Optional[str], opcional) — O papel do usuário na organização. Campo do Hugging Face.
  • security_restrictions (Optional[list[Literal["ip", "token-policy", "mfa", "sso"]]], opcional) — Matriz de restrições de segurança que o usuário não concluiu para esta organização. Valores possíveis: “ip”, “token-policy”, “mfa”, “sso”. Campo do Hugging Face.

Informações sobre uma organização vinculada a um usuário conectado com 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 )

Parâmetros

  • sub (str) — Identificador único do usuário, mesmo em caso de renomeação. Campo do OpenID Connect.
  • name (str) — O nome completo do usuário. Campo do OpenID Connect.
  • preferred_username (str) — Nome de usuário do usuário. Campo do OpenID Connect.
  • email_verified (Optional[bool], opcional) — Indica se o e-mail do usuário está verificado. Campo do OpenID Connect.
  • email (Optional[str], opcional) — O endereço de e-mail do usuário. Campo do OpenID Connect.
  • picture (str) — URL da foto de perfil do usuário. Campo do OpenID Connect.
  • profile (str) — A URL do perfil do usuário. Campo do OpenID Connect.
  • website (Optional[str], opcional) — A URL do site do usuário. Campo do OpenID Connect.
  • is_pro (bool) — Se o usuário é um usuário pro. Campo do Hugging Face.
  • can_pay (Optional[bool], opcional) — Indica se o usuário possui um método de pagamento configurado. Campo do Hugging Face.
  • orgs (Optional[list[OrgInfo]], opcional) — Lista de organizações das quais o usuário faz parte. Campo do Hugging Face.

Informações sobre um usuário conectado com OAuth.

OAuthInfo

classe huggingface_hub.OAuthInfo

< >

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

Parâmetros

  • access_token (str) — O token de acesso.
  • access_token_expires_at (datetime.datetime) — A data de expiração do token de acesso.
  • user_info (OAuthUserInfo) — As informações do usuário.
  • state (str, opcional) — Estado passado ao provedor OAuth na solicitação original ao provedor OAuth.
  • scope (str) — Escopo concedido.

Informações sobre o login via OAuth.

Update on GitHub