Guía de autenticación del SDK para Python de Frame.io
Guía de autenticación del SDK para Python de Frame.io
Esta guía explica cómo autenticarse con la API de Frame.io mediante el SDK para Python de Frame.io (frameio). La API V4 de Frame.io usa Adobe Identity Management Service (IMS), la plataforma de identidad OAuth 2.0 de Adobe. Esta es una referencia independiente para desarrolladores de Python. Todos los ejemplos de código y flujos que aparecen a continuación son solo para el paquete frameio.
Tipos de autenticación en el SDK de Python
El SDK de Python admite cuatro opciones de autenticación:
La credencial de Native App de Adobe requiere controladores de esquema de URI personalizados (por ejemplo, adobe+<hash>://…</hash>) que intercepten las redirecciones a nivel del sistema operativo. Python no tiene una forma estándar de registrar dichos controladores, por lo que el SDK de Python no ofrece una clase NativeAppAuth. Para aplicaciones Python con interacción del usuario, utilice WebAppAuth con un servidor de devolución de llamada local (por ejemplo, Flask o FastAPI). Para cargas de trabajo no interactivas, utilice ServerToServerAuth.
Usuarios de cuenta de servicio
Cuando se usa la autenticación de servidor a servidor, la aplicación actúa como usuario de cuenta de servicio, un tipo de cuenta independiente que puede realizar acciones en nombre del servicio. Estos usuarios son visibles para otros usuarios en Frame.io: cuando una cuenta de servicio realiza una acción, su nombre se muestra en la IU. Puede conceder y revocar el acceso de cuentas de servicio mediante Adobe Admin Console y Developer Console. Los nombres de las cuentas de servicio se gestionan desde la IU de Frame.io. De forma predeterminada, la primera conexión S2S se denomina Service Account User, la segunda Service Account User 2, y así sucesivamente.
Consulte Automatización de la configuración con compatibilidad de servidor a servidor de Frame.io para obtener más información.
Inicio rápido
Requisitos previos
- Credenciales de Adobe Developer Console:
- ID de cliente: Obligatorio para todos los flujos Oauth. - Secreto de cliente: Obligatorio para los flujos de servidor a servidor y Web App. - URI de redireccionamiento: Obligatorio para los flujos Web App y SPA; debe estar registrado en el proyecto de Adobe
- Instale el SDK:
Elección de un método
- ¿No interviene ningún usuario? Use Server-to-Server (
ServerToServerAuth). - ¿Interviene un usuario y puede almacenar un secreto? Use Web App (
WebAppAuth). - ¿Interviene un usuario, pero no puede almacenar un secreto? Use SPA (
SPAAuth).
Token de acceso
Si ya dispone de un token de acceso, procedente de otro sistema OAuth o de un intercambio anterior, por ejemplo, mediante nuestro API Explorer, puede pasarlo directamente:
Este es el enfoque más sencillo, pero el token caducará en algún momento y el SDK no lo actualizará automáticamente.
Tokens de desarrollador heredados
En el caso de las cuentas migradas a V4 que aún no se administran mediante Adobe Admin Console, puede seguir usando tokens de desarrollador heredados del sitio para desarrolladores de Frame.io. Debe incluir el encabezado x-frameio-legacy-token-auth y establecerlo en true:
Los tokens de desarrollador heredados no caducan, pero son un mecanismo de transición. Para integraciones nuevas y cargas de trabajo de producción, recomendamos usar uno de los flujos OAuth 2.0 que se indican a continuación. Consulte la Guía de migración para obtener más información.
Servidor a servidor (credenciales de cliente)
Use este método para servicios backend y scripts que necesiten acceso a Frame.io sin interacción del usuario. Este flujo solo está disponible para cuentas de Frame.io V4 administradas mediante Adobe Admin Console. La aplicación se autentica como usuario de cuenta de servicio sin intervención humana.
Síncrono
Asíncrono
Eso es todo. auth.getToken() es un elemento invocable que el SDK invoca en cada solicitud. Si el token actual sigue siendo válido, se devuelve inmediatamente. Si está a punto de caducar, primero se obtiene uno nuevo de forma totalmente transparente.
Funcionamiento
Las credenciales de cliente, es decir, el ID de cliente y el secreto, nunca caducan. Solo se rotan manualmente por motivos de seguridad. S2S proporciona acceso a la API prácticamente permanente e ininterrumpido, sin intervención manual.
En segundo plano:
- En la primera llamada de API,
get_tokensolicita un nuevo token de acceso a Adobe IMS mediante la concesiónclient_credentials. - El token se almacena en caché en memoria. Los tokens de acceso individuales caducan (normalmente en 24 horas), pero el SDK se encarga de gestionarlo.
- Cuando un token almacenado en caché se encuentra dentro del búfer de actualización, cuyo valor predeterminado es 60 segundos antes de la caducidad, el SDK obtiene automáticamente uno nuevo con las mismas credenciales de cliente.
- No intervienen tokens de actualización. Las propias credenciales de cliente son el secreto de larga duración y siempre se pueden usar para emitir un nuevo token de acceso.
Autenticación explícita
Si desea obtener el token de forma anticipada (por ejemplo, para detectar rápidamente credenciales incorrectas al iniciar):
Web App (código de autorización)
Use este método para aplicaciones del lado del servidor en las que los usuarios inician sesión con su Adobe ID. Este flujo requiere un secreto de cliente, que debe almacenarse de forma segura en el servidor.
Gestión de la devolución de llamada
Cuando Adobe IMS redirija al usuario de vuelta a redirect_uri, extraiga los parámetros code y state. Verifique que state coincida con el valor almacenado y, a continuación, intercambie code por tokens:
Síncrono
Asíncrono
Esto intercambia el código de autorización por un token de acceso y un token de actualización, y almacena ambos internamente.
Ejemplo completo de Flask
Single Page App/PKCE (código de autorización + PKCE)
Use este método para aplicaciones basadas en explorador, aplicaciones de escritorio o herramientas de CLI que no puedan almacenar de forma segura un secreto de cliente. Este flujo usa PKCE (RFC 7636) para proteger el intercambio del código de autorización.
Uso asíncrono
Todas las clases de autenticación tienen una equivalente asíncrona con el prefijo Async. Los ejemplos de código anteriores incluyen las pestañas Síncrono y Asíncrono cuando corresponde.
Actualización manual de tokens
En los flujos Web App y SPA, el SDK actualiza los tokens automáticamente mediante get_token. Si necesita control explícito, puede llamar directamente a refresh():
Síncrono
Asíncrono
Esto resulta útil si desea forzar una actualización antes de una operación crítica en lugar de depender del búfer de actualización automático.
Persistencia de tokens
Todas las clases de autenticación admiten export_tokens() e import_tokens() para conservar el estado de los tokens entre reinicios. En los flujos Web App y SPA, esto es especialmente importante, ya que los tokens de acceso y de actualización se almacenan en memoria de forma predeterminada. Si la aplicación se reinicia, los usuarios tendrían que volver a autenticarse a menos que los tokens se conserven. En Server-to-Server, la persistencia es opcional, ya que las credenciales de cliente siempre pueden emitir un token nuevo, pero importar un token almacenado en caché evita un recorrido adicional al iniciar.
Exportación e importación
Persistencia automática con on_token_refreshed
Para conservar los tokens automáticamente cada vez que se actualicen, use la devolución de llamada on_token_refreshed:
La devolución de llamada recibe la misma estructura de diccionario que export_tokens() y se activa después de cada actualización correcta del token. En las clases asíncronas, on_token_refreshed puede ser una función normal o una función asíncrona. Ambas son compatibles.
Revocación de tokens
Para cerrar la sesión de un usuario e invalidar sus tokens con Adobe IMS:
Esto realiza una solicitud de revocación con el máximo esfuerzo a Adobe IMS tanto para el token de acceso como para el token de actualización y, a continuación, borra todo el estado local de los tokens. Después de la revocación, el usuario tendrá que volver a autenticarse.
En las clases asíncronas, use await auth.revoke().
Gestión de errores
Todos los errores de autenticación heredan de FrameioAuthError, por lo que puede capturarlos de forma general o gestionar casos específicos:
Referencia de errores
Gestión de tokens de actualización caducados en producción
En los flujos Web App y SPA, el token de actualización acabará caducando. Cuando esto ocurra, get_token generará TokenExpiredError. Debe capturarlo y redirigir al usuario de nuevo a través del flujo de autorización.
Referencia de configuración
Todas las clases de autenticación aceptan estos parámetros opcionales:
Referencia de parámetros
Entornos de ensayo
Apunte a una instancia de ensayo de Adobe IMS sobrescribiendo ims_base_url. El SDK también exporta DEFAULT_IMS_BASE_URL (https://ims-na1.adobelogin.com) por si necesita hacer referencia al valor de producción mediante programación.
Cliente HTTP personalizado
Para compatibilidad con proxy o configuración de TLS personalizada:
Seguridad de subprocesos
Las clases de autenticación síncronas son totalmente seguras para subprocesos. Cuando varios subprocesos llaman a get_token simultáneamente y se necesita una actualización, solo uno de ellos realiza la actualización. Los demás esperan y reciben el mismo resultado. No se requiere ningún bloqueo externo. Las clases asíncronas ofrecen la misma garantía mediante asyncio.Lock, lo que resulta seguro para corrutinas concurrentes dentro de un único bucle de eventos.