• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Hire tech talent
    • Blog
    • Sales
    • Salary Calculator

0

338
Views
Cómo implementar OAuth en FastAPI con ID y secreto de cliente

He seguido los documentos sobre Oauth2 pero no describe el proceso para agregar la identificación y el secreto del cliente.

https://fastapi.tiangolo.com/advanced/security/oauth2-scopes/

y que hace esto

 class UserInDB(User): hashed_password: str

del ejemplo original

almost 4 years ago · Santiago Trujillo
1 answers
Answer question

0

En la documentación, utiliza OAuth2PasswordRequestForm para autenticar al usuario. Esta clase tiene básicamente 6 campos diferentes,

 grant_type: str = Form(None, regex="password"), username: str = Form(...), password: str = Form(...), scope: str = Form(""), client_id: Optional[str] = Form(None), client_secret: Optional[str] = Form(None),

Entonces puede agregar client_id y client_secret , si está interesado en el Repositorio aquí.

Pero normalmente prefiero authlib , ahorra mucho tiempo y lo hace más fácil. Aquí hay un ejemplo completo de cómo puede crear un OAuth con authlib

Primero cree un cliente OAuth

 from authlib.integrations.starlette_client import OAuth from starlette.config import Config config = Config('.env') # read config from .env file oauth = OAuth(config) oauth.register( name='google', server_metadata_url='https://accounts.google.com/.well-known/openid-configuration', client_kwargs={ 'scope': 'openid email profile' } )

No necesitamos agregar client_id y client_secret aquí, porque están en el archivo .env. Se supone que no debe codificarlos en el código de los productos reales. Google tiene un punto final de descubrimiento de OpenID, podemos usar esta URL para server_metadata_url . Authlib buscará automáticamente este server_metadata_url para configurar el cliente de OAuth por usted.

Ahora crearemos una aplicación FastAPI para definir una ruta de inicio de sesión.

 from fastapi import FastAPI, Request from starlette.middleware.sessions import SessionMiddleware app = FastAPI() app.add_middleware(SessionMiddleware, secret_key="secret-string")

Necesitamos este SessionMiddleware, porque Authlib usará request.session para almacenar códigos y estados temporales. El siguiente código, que es /login de sesión, lo redirigirá al sitio web de la cuenta de Google.

 @app.route('/login') async def login(request: Request): redirect_uri = request.url_for('auth') return await oauth.google.authorize_redirect(request, redirect_uri

Cuando otorga acceso desde el sitio web de Google, Google lo redirigirá a su redirect_uri dado, que es request.url_for('auth') :

 @app.route('/auth') async def auth(request: Request): token = await oauth.google.authorize_access_token(request) user = await oauth.google.parse_id_token(request, token) return user

El código anterior obtendrá un token que contiene access_token e id_token. Un id_token contiene información del usuario, solo necesitamos analizarlo para obtener la información del usuario de inicio de sesión.

Fuentes: Authlib-FastAPI-Google-Iniciar sesión

Además, si aún desea usar Pure FastAPI, consulte este enlace FastAPI OAuth2PasswordRequestForm

almost 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!