python - password - django social auth jwt
Marco REST de Django-API de consumidor de OAuth2 del proveedor externo (2)
Estoy tratando de autorizar a los usuarios a acceder a algunos recursos de mi API Django REST framework usando Oauth2.
La mayoría de las respuestas sobre Oauth2 y API tratan de hacer que la API sea un proveedor.
Pero planeo compartir un proveedor Oauth2 con muchas API REST, y no puedo entender cómo consumirlo (no cómo proporcionar Oauth2).
No tengo idea de cómo un usuario puede iniciar sesión en el SSO del proveedor, y luego comunicar su token a mi API de consumo, que debe autenticar a los usuarios contra mi proveedor (obteniendo su información, principalmente autorizaciones).
¿Alguien tiene una pista sobre cómo consumir Oauth2 del marco Django REST?
Figura:
[Usuario] -> [Mi API] <-> [Proveedor de Oauth2 (con django-oauth-provider)] <-> [Directorio activo / cualquier cosa]
Si mira el código en https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/authentication.py#L290 , parece que no es posible. El django-rest-framework accede internamente a las tablas de la base de datos del proveedor para verificar los tokens y autentica las solicitudes utilizando estos datos.
Lo cual para mí es un poco contrario al propósito de OAuth, pero aquí vamos.
He encontrado estas preguntas relacionadas, que confirman lo que pensé que era un error de interpretación de mi parte:
- ¿Cómo validar un token de acceso de OAuth 2.0 para un servidor de recursos?
- https://softwareengineering.stackexchange.com/questions/159119/oauth2-flow-does-the-server-validate-with-the-auth-server
Básicamente, el estándar define esta característica ... es sorprendente, dado que mucha gente llegará a ese punto más temprano que tarde.
Lo más extraño es que no pude encontrar ningún complemento django para hacer esto ... ¿somos los primeros dos que necesitamos autenticar más de una API usando el mismo servidor de autenticación?