Skip to main content
Esta documentação se refere às implantações federais do Devin. Voltar para a Documentação do Devin
Por padrão, o acesso ao build air-gapped é controlado apenas pelo arquivo de licença. Você também pode exigir que cada usuário faça login no seu próprio provedor de identidade OIDC. O SSO (Single Sign-On) funciona como uma camada adicional à licença: a licença continua sendo obrigatória, e o fluxo de login é executado no emissor que você configurar.

Criar o arquivo de autenticação

O arquivo define exatamente um modo. Se o arquivo não existir, o produto se comporta como se ele contivesse "mode": "license".
/etc/devin/auth.json
Campos desconhecidos são rejeitados. No modo license, apenas schema_version e mode são permitidos.
Se o seu IdP usa um certificado emitido por uma CA privada, defina DEVIN_CA_BUNDLE com o caminho de um pacote PEM para que a CLI confie nele; consulte Rede e certificados.

Registre o cliente no seu IdP

A CLI executa o fluxo de código de autorização do OIDC com PKCE (S256) como um cliente público; não há segredo do cliente. O cliente que você registrar deve atender aos seguintes requisitos:
  1. Ser um cliente público (sem segredo do cliente) com o ID definido em client_id, por exemplo devin-cli, com a concessão de código de autorização ativada e o método PKCE S256.
  2. Ter http://127.0.0.1/callback registrado como URI de redirecionamento válido. A CLI escuta em uma porta de loopback aleatória (http://127.0.0.1:<port>/callback) no fluxo pelo navegador e usa o endereço fixo http://127.0.0.1/callback no fluxo manual. Conforme a RFC 8252, o IdP deve ignorar a porta de loopback; se o seu não fizer isso, registre um curinga correspondente.
  3. Se você quiser usar required_group, o ID token deve conter a claim de associação a grupos indicada em groups_claim (groups por padrão).
  4. O IdP deve retornar um ID token na renovação (a maioria faz isso quando o escopo openid é concedido), e o tempo de vida do ID token para este cliente deve ser curto. Consulte Como a revogação se propaga para entender o motivo.

Entrar

Faça login em um terminal na estação de trabalho:
Em um host sem interface gráfica ou via SSH, use o fluxo manual. A CLI exibe uma URL que você deve abrir em um navegador em qualquer máquina; após fazer login, o navegador é redirecionado para uma URL 127.0.0.1 que não vai carregar. Copie essa URL completa (incluindo os parâmetros de consulta) e cole-a no terminal.
O Devin Desktop usa o mesmo login por meio do agente integrado; se o usuário não estiver conectado, ele precisará fazer login nas configurações do Devin antes de começar a trabalhar.

Verificar o status e sair

Se o login em cache estiver ausente ou não puder mais ser renovado, a saída será Status: not logged in (<reason>), seguida de Run \devin auth login` to sign in.`
O logout é apenas local: ele exclui o cache de tokens e não se comunica com o IdP.

O que a CLI valida

O ID token é validado localmente: a assinatura com base no JWKS do IdP, iss, aud, a expiração (com tolerância de 120 segundos para diferenças de relógio), o nonce do login e a restrição por grupo. Os ID tokens e os tokens de atualização ficam em cache no armazenamento local de credenciais, com permissões restritas ao proprietário (0600), e são renovados silenciosamente junto ao IdP. Quando o SSO está configurado e não há um login válido (e a renovação silenciosa falha), a CLI é encerrada na inicialização com um erro que orienta o usuário a executar devin auth login. A CLI nunca segue redirecionamentos HTTP do IdP: um 3xx do endpoint de descoberta, de JWKS ou de token faz o login falhar com um erro que indica o endpoint. Portanto, issuer deve apontar para as URLs efetivamente disponibilizadas pelo IdP.

Os endpoints descobertos devem estar no mesmo host do emissor

O authorization_endpoint, o token_endpoint e o jwks_uri obtidos via descoberta devem ter o mesmo esquema, host e porta que o issuer (portas padrão são consideradas equivalentes). Um endpoint em qualquer outro host é rejeitado, e o login falha com um erro como:
Algumas topologias de IdP disponibilizam endpoints legitimamente a partir de mais de um host. O caso mais comum em ambientes on-premises é o Keycloak com hostname-backchannel-dynamic=true, em que token_endpoint e jwks_uri são reescritos para o nome do host interno pelo qual a CLI se conectou. Se, e somente se, você tiver confirmado na própria configuração do IdP que o host adicional é intencional, adicione-o:
As entradas são host (qualquer porta) ou host:port, comparadas sem diferenciar maiúsculas de minúsculas. Não há suporte a curingas nem como desativar a verificação. A lista de permissões nunca flexibiliza o TLS: um endpoint http:// continua sendo recusado quando o emissor é https://. Não adicione um host só porque ele aparece em um erro de login; o erro indica que a verificação está funcionando.

Como a revogação se propaga

A restrição por grupo é feita sobre o ID token em cache. Por isso, remover um usuário do required_group (ou desativá-lo) no IdP só passa a valer na próxima atualização do token dele: no máximo quando o ID token atual expirar, mais os 120 segundos de tolerância de defasagem de relógio. Se a revogação rápida for importante, mantenha curta a validade do ID token deste cliente. Se uma resposta de atualização não trouxer um novo ID token, o ID token em cache continua em uso, mas apenas por até 24 horas após o exp desse token. Depois disso, o usuário precisa entrar novamente, mesmo que o IdP ainda aceite o token de atualização.

Revalidação em sessões em execução

Enquanto o Devin Desktop (ou qualquer cliente do agente incluído) estiver em execução, o agente verifica novamente o login a cada 60 segundos e força a atualização do token junto ao IdP pelo menos a cada 15 minutos. Se uma verificação falhar, o agente registra um evento de auditoria sso_revalidation_failed com o código IDP, deixa de aceitar novos trabalhos e é encerrado; o usuário precisa fazer login novamente e reiniciar.

O que é auditado

A atividade de SSO é gravada no registro de auditoria local como eventos auth. Todo evento que tenha um token validado disponível inclui a identidade SSO em actor (sso_issuer, sso_subject, sso_user, sso_groups).

Códigos de erro do IDP

O catálogo completo está na página Códigos de erro.