Frame.io TypeScript SDK - Guia de autenticação
Frame.io TypeScript SDK - Guia de autenticação
Este guia explica como autenticar com a API do Frame.io usando o SDK TypeScript do Frame.io (frameio). A API Frame.io V4 usa o Adobe Identity Management Service (IMS), a plataforma de identidade OAuth 2.0 da Adobe. Esta é uma referência independente para desenvolvedores TypeScript/JavaScript. Todos os exemplos de código e fluxos abaixo são apenas para o pacote frameio
Tipos de autenticação no SDK TypeScript
O SDK TypeScript oferece suporte a quatro classes de autenticação OAuth, além do uso direto de token:
Usuários de conta de serviço
Ao usar autenticação Server-to-Server, seu aplicativo atua como um usuário de conta de serviço, um tipo distinto de conta que pode executar ações em nome do serviço. Eles ficam visíveis para outros usuários no Frame.io: quando uma conta de serviço executa uma ação, seu nome é exibido na IU. Você pode conceder e revogar o acesso da conta de serviço pelo Adobe Admin Console e Developer Console. Os nomes de conta de serviço são gerenciados pela IU do Frame.io. Por padrão, a primeira conexão S2S é nomeada Usuários de conta de serviço, a segunda Usuários de conta de serviço 2 e assim por diante.
Consulte Automatizar a configuração usando suporte servidor para servidor Frame.io para obter mais informações.
Início rápido
Pré-requisitos
- Credenciais do Adobe Developer Console:
- ID do cliente — obrigatório para todos os fluxos OAuth - Segredo do cliente — obrigatório para fluxos servidor a servidor e aplicativo web - URI de redirecionamento — obrigatório para fluxos Web App, SPA e Native App; deve ser registrado no seu projeto da Adobe
- Instalar o SDK:
Escolha de um método
- **Nenhum usuário envolvido?**Use Server-to-Server (
ServerToServerAuth). - **Usuário envolvido e você pode armazenar um segredo?**Use Web App (
WebAppAuth). - **Usuário envolvido, mas você não pode armazenar um segredo?**Use SPA (
SPAAuth) para aplicativos de navegador ou Native App (NativeAppAuth) para aplicativos desktop/para dispositivos móveis.
Token de acesso
Se você já tiver um token de acesso de outro sistema OAuth ou de uma troca anterior, por exemplo, pelo nosso API Explorer, poderá passá-lo diretamente:
Essa é a abordagem mais simples, mas o token acabará expirando e o SDK não o atualizará para você.
Tokens de desenvolvedor legados
Para contas migradas para a V4 que ainda não são administradas pelo Adobe Admin Console, você pode continuar usando Tokens de desenvolvedor legados do site de desenvolvedores do Frame.io. Você deve incluir o cabeçalho x-frameio-legacy-token-auth e defini-lo como true:
Tokens de desenvolvedor legados não expiram, mas são um mecanismo de transição. Para novas integrações e cargas de trabalho de produção, recomendamos usar um dos fluxos OAuth 2.0 abaixo. Consulte o Guia de migração para obter detalhes.
Servidor para servidor (Credenciais do cliente)
Use isso para serviços de backend e scripts que precisam de acesso ao Frame.io sem interação do usuário. Esse fluxo só está disponível para contas Frame.io V4 administradas pelo Adobe Admin Console. Seu aplicativo se autentica como um usuário de conta de serviço sem intervenção humana.
É isso. auth.getToken() é uma função assíncrona que o SDK invoca em cada solicitação. Se o token atual ainda for válido, ele retornará imediatamente. Se estiver prestes a expirar, ele buscará um novo primeiro, de forma totalmente transparente.
Como funciona
Suas credenciais do cliente (ID + segredo do cliente) nunca expiram. Você só precisa alterná-las manualmente por higiene de segurança. S2S oferece acesso à API efetivamente permanente e ininterrupto, sem nenhuma intervenção manual.
Nos bastidores:
- Na primeira chamada da API,
getToken()um novo token de acesso do Adobe IMS usando a concessãoclient_credentials. - O token é armazenado em cache na memória. Tokens de acesso individuais expiram (normalmente em 24 horas), mas isso é tratado para você.
- Quando um token em cache está dentro do buffer de atualização (padrão: 60 segundos antes da expiração), o SDK busca um novo automaticamente usando as mesmas credenciais de cliente.
- Não há tokens de atualização envolvidos. As próprias credenciais de cliente são o segredo de longa duração e sempre podem ser usadas para emitir um novo token de acesso.
Autenticação explícita
Se quiser buscar o token antecipadamente, por exemplo, para falhar rapidamente com credenciais incorretas na inicialização:
Aplicativo web (Código de autorização)
Use isso para aplicativos do lado do servidor em que os usuários fazem logon com sua Adobe ID. Este fluxo requer um segredo do cliente, que deve ser armazenado com segurança no servidor.
Processar o callback
Quando o Adobe IMS redireciona o usuário de volta para o redirectUri, extraia os parâmetros code e state. Verifique se o estado corresponde ao que você armazenou e troque o código por tokens:
Isso troca o código de autorização por um token de acesso e um token de atualização, armazenando ambos internamente.
Exemplo completo em Express
Aplicativo de página única / PKCE (Código de autorização + PKCE)
Use isso para aplicativos baseados em navegador, aplicativos para desktop ou ferramentas de CLI que não conseguem armazenar um client secret com segurança. Este fluxo usa PKCE (RFC 7636) para proteger a troca de código de autorização.
O codeVerifier deve ser armazenado com segurança no lado do cliente entre a solicitação de autorização e a troca do código. Use sessionStorage ou equivalente em aplicativos de navegador.
Native App (código de autorização + PKCE)
Use isso para aplicativos de desktop e mobile. Quando você cria uma credencial de Native App no Adobe Developer Console, a Adobe atribui um URI de redirecionamento do formulário adobe+<hash>://callback</hash> — você registra seu aplicativo para processar esse esquema de URI personalizado no nível do sistema operacional. Redirecionamentos de loopback (http://127.0.0.1:<port>/callback</port>) também são compatíveis com desenvolvimento local. O fluxo é idêntico ao SPA: usa PKCE sem client secret.
Regras de URI de redirecionamento
A Adobe aplica regras de URI de redirecionamento em dois pontos: quando você registra a credencial no Adobe Developer Console e quando o parâmetro redirect_uri chega ao ponto de acesso /authorize/v2. O valor que você passa para redirectUri neste SDK deve corresponder a um dos “Padrões de URI de redirecionamento” registrados na credencial; caso contrário, a Adobe redireciona para a URI de redirecionamento padrão na credencial.
- Credenciais de Web App e SPA exigem HTTPS.
- Credenciais Native App usam um redirecionamento não HTTPS, normalmente a URI
adobe+<hash>://callback</hash>mostrado no Developer Console para a credencial.
Consulte o Adobe Developer Console para os padrões exatos aceitos para sua credencial.
O SDK para Python não inclui uma classe de credencial Native App, pois o Python não tem uma forma padrão de registrar manipuladores
de esquema de URI personalizado. O SDK para TypeScript oferece suporte a todos os quatro tipos de credenciais, incluindo Native App.
Atualização manual de token
Para fluxos Web App, SPA e Native App, o SDK atualiza tokens automaticamente por meio de getToken(). Se você precisar de controle explícito, pode chamar refresh() diretamente:
Isso é útil quando você quer forçar uma atualização antes de uma operação crítica, em vez de depender do buffer de atualização automática.
refresh() está disponível no WebAppAuth, SPAAuth e NativeAppAuth. Ele gera ConfigurationError se nenhum token de atualização estiver disponível (ou seja, você deve chamar exchangeCode() primeiro). ServerToServerAuth não tem um método refresh() — ele usa authenticate() para buscar um novo token via credenciais do cliente.
Persistência de tokens
Todas as classes de autenticação oferecem suporte a exportTokens() e importTokens() para persistir o estado do token entre reinicializações. Para fluxos Web App, SPA e Native App, isso é especialmente importante, pois os tokens de acesso e de atualização ficam na memória por padrão. Se o aplicativo reiniciar, os usuários precisarão se autenticar novamente, a menos que você persista esses tokens. Para servidor para servidor, a persistência é opcional (as credenciais de cliente sempre podem emitir um novo token), mas importar um token em cache evita uma ida e volta extra na inicialização.
Exportar e importar
Armazene os tokens exportados com segurança. Eles contêm tokens de acesso e de atualização que concedem acesso à API. Evite escrever tokens
em arquivos de texto sem formatação na produção.
Persistência automática com onTokenRefreshed
Para persistir tokens automaticamente sempre que forem atualizados, use o callback onTokenRefreshed:
O callback recebe o mesmo formato de exportTokens() e é acionado após cada atualização de token bem-sucedida.
Revogação de tokens
Para encerrar a sessão de um usuário e invalidar seus tokens com o Adobe IMS:
Isso faz duas solicitações de revogação de melhor esforço ao Adobe IMS, uma para o token de acesso e outra para o token de atualização, em paralelo, e limpa todo o estado local do token.Para clientes confidenciais (WebAppAuth), as solicitações de revogação usam autenticação básica HTTP; para clientes públicos (SPAAuth, NativeAppAuth), o client_id é enviado como parâmetro de consulta. Erros de revogação são registrados, mas não gerados. Após a revogação, o usuário precisará se autenticar novamente.
Tratamento de erros
Todos os erros de autenticação herdam de FrameioAuthError, portanto você pode capturá-los de forma ampla ou tratar casos específicos:
Referência de erros
Tratamento de tokens de atualização expirados em produção
Para fluxos Web App, SPA e Native App, o token de atualização acabará expirando.Quando isso acontecer, getToken() gera TokenExpiredError. Você deve capturar isso e redirecionar o usuário pelo fluxo de autorização novamente.
Referência de configuração
Esses parâmetros têm padrões sensatos e raramente precisam ser definidos. Se precisar personalizar o comportamento, apontar para um IMS de staging, injetar um fetch personalizado, ajustar tempos-limite ou conectar um logger, passe qualquer um deles como parâmetros opcionais ao construir a classe de autenticação:
Ambientes de preparo
Aponte para uma instância de staging do Adobe IMS substituindo imsBaseUrl. O SDK também exporta DEFAULT_IMS_BASE_URL (https://ims-na1.adobelogin.com) se precisar referenciar o valor de produção programaticamente.
Busca personalizada
Para suporte a proxy ou configuração TLS personalizada:
Segurança de concorrência
O SDK para TypeScript é seguro para uso simultâneo. Quando várias chamadas getToken() acontecem simultaneamente e uma atualização é necessária, apenas uma solicitação de atualização é disparada. As outras aguardam a mesma promise e recebem o mesmo resultado. Nenhum bloqueio externo é necessário. Essa deduplicação usa o loop de eventos de thread única do JavaScript e uma Promise compartilhada. Se uma atualização já estiver em andamento, chamadores simultâneos se juntam a ela em vez de iniciar uma segunda solicitação. Se revoke() for chamado enquanto uma atualização estiver em andamento, a atualização será rejeitada com AuthenticationError e os tokens permanecerão limpos. A revogação sempre vence.