Internamente, o módulo SAML do Overleaf usa a biblioteca passport-saml, e a maioria das opções de configuração a seguir é repassada ao passport-saml. Se você estiver tendo problemas para configurar o SAML, vale a pena ler o README do passport-saml para ter uma ideia da configuração que ele espera.A variável de ambiente EXTERNAL_AUTH é necessária para ativar o módulo de autenticação SAML. Esta variável de ambiente especifica quais métodos de autenticação externa estão ativados. O valor desta variável é uma lista. Se a lista incluir saml, a autenticação SAML será ativada.Por exemplo: EXTERNAL_AUTH=ldap samlAo usar o método de autenticação SAML, o usuário é redirecionado para o site de autenticação do provedor de identidade (IdP). Se o IdP autenticar o usuário com sucesso, o banco de dados de usuários do Overleaf é verificado em busca de um registro que contenha um campo samlIdentifiers estruturado da seguinte forma:
O externalUserId deve corresponder ao valor da propriedade especificada por userIdAttribute no perfil de usuário retornado pelo servidor do IdP.Se nenhum registro correspondente for encontrado, o banco de dados é pesquisado em busca de um usuário cujo endereço de e-mail principal corresponda ao e-mail no perfil de usuário do IdP:
Se esse usuário for encontrado, o campo hashedPassword é excluído para desativar a autenticação local, e o campo samlIdentifiers é adicionado.
Se nenhum usuário correspondente for encontrado, um novo usuário é criado com o endereço de e-mail e os samlIdentifiers do perfil do IdP.
Observação: atualmente, apenas um IdP SAML é suportado. O campo providerId em samlIdentifiers é fixado em '1'.
Nome de exibição do serviço de identidade, usado na página de login (padrão: Log in with SAML IdP).
OVERLEAF_SAML_USER_ID_FIELD
O valor deste atributo será usado pelo Overleaf como ID de usuário externo; o padrão é nameID.
OVERLEAF_SAML_EMAIL_FIELD
Nome do campo de e-mail no perfil do usuário; o padrão é nameID.
OVERLEAF_SAML_FIRST_NAME_FIELD
Nome do campo firstName no perfil do usuário; o padrão é givenName.
OVERLEAF_SAML_LAST_NAME_FIELD
Nome do campo lastName no perfil do usuário; o padrão é lastName
OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN
Se definida como true, atualiza os campos first_name e last_name do usuário no login e desativa o formulário de dados do usuário na página /user/settings.
OVERLEAF_SAML_ENTRYPOINT(obrigatória)
URL do ponto de entrada do serviço de identidade SAML.
Exemplo para Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
OVERLEAF_SAML_ISSUER(obrigatória)
O nome do emissor (Issuer).
OVERLEAF_SAML_AUDIENCE
Audience esperada na resposta SAML; o padrão é o valor de OVERLEAF_SAML_ISSUER.
OVERLEAF_SAML_IDP_CERT(obrigatória)
Caminho para um arquivo que contém o certificado público do provedor de identidade, usado para validar as assinaturas das respostas SAML recebidas. Se o provedor de identidade tiver vários certificados de assinatura válidos, pode ser um array JSON com os caminhos dos certificados.
Caminho para um arquivo que contém o certificado público de assinatura a ser incorporado nas requisições de autenticação, para que o IdP possa validar as assinaturas da requisição SAML recebida. É necessário ao configurar o endpoint de metadados quando a estratégia está configurada com uma OVERLEAF_SAML_PRIVATE_KEY. Pode ser fornecido um array JSON com caminhos de certificados para suportar a rotação de certificados. Ao fornecer um array de certificados, a primeira entrada do array deve corresponder à OVERLEAF_SAML_PRIVATE_KEY atual. As entradas adicionais do array podem ser usadas para publicar os próximos certificados aos IdPs antes de alterar a OVERLEAF_SAML_PRIVATE_KEY.
OVERLEAF_SAML_PRIVATE_KEY
Caminho para um arquivo que contém uma chave privada em formato PEM correspondente ao OVERLEAF_SAML_PUBLIC_CERT, usada para assinar as requisições de autenticação enviadas pelo passport-saml.
OVERLEAF_SAML_DECRYPTION_CERT
Caminho para um arquivo que contém o certificado público, usado para o endpoint de metadados.
OVERLEAF_SAML_DECRYPTION_PVK
Caminho para um arquivo que contém a chave privada correspondente ao OVERLEAF_SAML_DECRYPTION_CERT, que será usada para tentar descriptografar quaisquer asserções criptografadas recebidas.
OVERLEAF_SAML_SIGNATURE_ALGORITHM
Define opcionalmente o algoritmo de assinatura das requisições; os valores válidos são ‘sha1’ (padrão), ‘sha256’ (preferível) e ‘sha512’ (mais seguro, verifique se o seu IdP o suporta).
OVERLEAF_SAML_ADDITIONAL_PARAMS
Dicionário JSON de parâmetros de consulta adicionais a acrescentar a todas as requisições.
OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
Dicionário JSON de parâmetros de consulta adicionais a acrescentar às requisições ‘authorize’.
Exemplo: {"some_key": "some_value"}
OVERLEAF_SAML_IDENTIFIER_FORMAT
Formato do identificador de nome a solicitar ao provedor de identidade (padrão: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). Se usar urn:oasis:names:tc:SAML:2.0:nameid-format:persistent, certifique-se de que a variável de ambiente OVERLEAF_SAML_EMAIL_FIELD esteja definida. Se for necessário urn:oasis:names:tc:SAML:2.0:nameid-format:transient, você também deve definir a variável de ambiente OVERLEAF_SAML_USER_ID_FIELD, que pode, por exemplo, ser definida como o endereço de e-mail do usuário.
OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
Diferença de relógio aceitável, em milissegundos, entre cliente e servidor ao verificar os timestamps de validade das condições de asserção OnBefore e NotOnOrAfter. Definir como -1 desativa completamente a verificação destas condições. O padrão é 0.
OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
Atributo AttributeConsumingServiceIndex a adicionar à AuthnRequest para indicar ao IdP qual conjunto de atributos anexar à resposta (link).
OVERLEAF_SAML_AUTHN_CONTEXT
Array JSON de valores de formato de identificador de nome para solicitar o contexto de autenticação. Padrão: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
OVERLEAF_SAML_FORCE_AUTHN
Se true, a requisição SAML inicial do provedor de serviço especifica que o IdP deve forçar uma nova autenticação do usuário, mesmo que ele possua uma sessão válida.
OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
Se true, não solicita um contexto de autenticação específico. Por exemplo, você pode definir isto como true para permitir contextos adicionais, como logins sem senha (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). O suporte a contextos adicionais depende do seu IdP.
OVERLEAF_SAML_AUTHN_REQUEST_BINDING
Se definida como HTTP-POST, solicita a autenticação ao IdP via binding HTTP POST; caso contrário, o padrão é HTTP-Redirect.
OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
Se always, o InResponseTo será validado nas respostas SAML recebidas.
Se never, o InResponseTo não será validado (padrão).
Se ifPresent, o InResponseTo só será validado se estiver presente na resposta SAML recebida.
OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED e OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
Quando definidas como true (padrão), o Overleaf espera que as asserções SAML e, respectivamente, toda a resposta de autenticação SAML sejam assinadas pelo IdP. Quando ambas as opções são false, pelo menos as asserções ou a resposta devem estar assinadas.
OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
Define o tempo de expiração após o qual um ID de requisição gerado para uma requisição SAML deixa de ser válido se aparecer numa resposta SAML no campo InResponseTo. Padrão: 28800000 (8 horas).
OVERLEAF_SAML_LOGOUT_URL
Endereço base a chamar com as requisições de logout (padrão: entryPoint).
Dicionário JSON de parâmetros de consulta adicionais a acrescentar às requisições ‘logout’.
OVERLEAF_SAML_IS_ADMIN_FIELD e OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
Quando ambas as variáveis de ambiente estão definidas, o processo de login atualiza user.isAdmin = true se o perfil retornado pelo IdP SAML contiver o atributo especificado por OVERLEAF_SAML_IS_ADMIN_FIELD e o seu valor corresponder a OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE ou for um array que contenha OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE; caso contrário, user.isAdmin é definido como false. Se alguma destas variáveis não estiver definida, o status de administrador só é definido como true durante a criação do usuário administrador no Launchpad.
Metadados para o provedor de identidadeA versão atual do Overleaf CE inclui um endpoint para obter os metadados do provedor de serviço: http://my-overleaf-instance.com/saml/metaO provedor de identidade precisará ser configurado para reconhecer o servidor Overleaf como um “provedor de serviço” (Service Provider). Consulte a documentação do seu servidor SAML para obter instruções sobre como fazer isso.Abaixo está um exemplo de metadados adequados para o provedor de serviço:
Anote os certificados, AssertionConsumerService.Location, SingleLogoutService.Location e EntityDescriptor.entityID e configure-os adequadamente no seu IdP, ou envie o arquivo de metadados ao administrador do IdP.
Exemplo de arquivo variables.env (mínimo)
OVERLEAF_APP_NAME="Our Overleaf Instance"ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url# Enables Thumbnail generation using ImageMagickENABLE_CONVERSIONS=true# Disables email confirmation requirementEMAIL_CONFIRMATION_DISABLED=true## Nginx# NGINX_WORKER_PROCESSES=4# NGINX_WORKER_CONNECTIONS=768## Set for TLS via nginx-proxy# OVERLEAF_BEHIND_PROXY=true# OVERLEAF_SECURE_COOKIE=trueOVERLEAF_SITE_URL=http://my-overleaf-instance.comOVERLEAF_NAV_TITLE=Our Overleaf Instance# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.pngOVERLEAF_ADMIN_EMAIL=support@example.comOVERLEAF_LEFT_FOOTER=[{"text": "Contact your support team", "url": "mailto:support@example.com"}]OVERLEAF_RIGHT_FOOTER=[{"text":"Hello, I am on the Right", "url":"https://github.com/yu-i-i/overleaf-cep"}]OVERLEAF_EMAIL_FROM_ADDRESS=team@example.comOVERLEAF_EMAIL_SMTP_HOST=smtp.example.comOVERLEAF_EMAIL_SMTP_PORT=587OVERLEAF_EMAIL_SMTP_SECURE=false# OVERLEAF_EMAIL_SMTP_USER=# OVERLEAF_EMAIL_SMTP_PASS=# OVERLEAF_EMAIL_SMTP_NAME=OVERLEAF_EMAIL_SMTP_LOGGER=falseOVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=trueOVERLEAF_EMAIL_SMTP_IGNORE_TLS=falseOVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department xOVERLEAF_PROXY_LEARN=trueNAV_HIDE_POWERED_BY=true################### SAML ###################EXTERNAL_AUTH=samlOVERLEAF_SAML_ISSUER=MyOverleafOVERLEAF_SAML_IDENTITY_SERVICE_NAME='Log in with SAML Provider'OVERLEAF_SAML_EMAIL_FIELD=EmailOVERLEAF_SAML_FIRST_NAME_FIELD=DisplayNameOVERLEAF_SAML_LAST_NAME_FIELD=DisplayNameOVERLEAF_SAML_ENTRYPOINT=http://localhost:18000/login/saml/authorize/admin/SAML_OverleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_SIGNATURE_ALGORITHM=
Este guia percorre uma configuração testada com o goauthentik. Substitua https://overleaf.example.com pela sua OVERLEAF_SITE_URL e https://authentik.example.com pelo endereço do seu Authentik.
1
Criar o provedor e a aplicação
No Authentik, abra Applications > Applications e clique em New Application. O assistente cria a aplicação e o seu provedor ao mesmo tempo.1. Dê à aplicação um nome e um slug, por exemplo overleaf, e clique em Next:
Audience: um nome para o Overleaf, por exemplo overleaf. O Overleaf o envia como OVERLEAF_SAML_ISSUER.
Authentik: o provedor SAML da aplicação
4. Abra Advanced protocol settings e defina:
Signing Certificate: um certificado, por exemplo authentik Self-signed Certificate
Sign assertions e Sign responses: ambos ativados
Service Provider Binding: Post
Authentik: assinatura e binding de um provedor testado (instância de teste)
5. Clique em Next até a última página e envie a aplicação.
2
Copiar os valores da página do provedor
Abra o provedor novamente. Tudo de que o Overleaf precisa está na sua visão geral:
Authentik: visão geral de um provedor SAML (instância de teste)
Na página do provedor
Variável de ambiente
SAML Endpoint
OVERLEAF_SAML_ENTRYPOINT e OVERLEAF_SAML_LOGOUT_URL
Audience
OVERLEAF_SAML_ISSUER
Download signing certificate (um arquivo)
OVERLEAF_SAML_IDP_CERT, veja o próximo passo
EntityID/Issuer em SAML Configuration é o nome do próprio Authentik. Não o coloque em OVERLEAF_SAML_ISSUER; use o Audience.
3
Instalar o certificado de assinatura
Clique em Download em Download signing certificate e salve o arquivo como data/overleaf/certs/idp_cert.pem no diretório do seu Toolkit. O contêiner o enxerga como /var/lib/overleaf/certs/idp_cert.pem:
Os grupos vêm como http://schemas.xmlsoap.org/claims/Group, uma lista. Para tornar os membros do grupo Admins do Authentik administradores do Overleaf:
O indicador de administrador é atualizado a cada login SAML. Com um campo ou valor errado, todo administrador que fizer login via SAML perde os direitos de administrador. Teste o mapeamento primeiro com uma segunda conta de administrador.
variables.env testado para o goauthentik
variables.env
EXTERNAL_AUTH=samlOVERLEAF_SAML_IDENTITY_SERVICE_NAME=Log in with AuthentikOVERLEAF_SAML_ENTRYPOINT=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_LOGOUT_URL=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_ISSUER=overleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_WANT_ASSERTIONS_SIGNED=trueOVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED=trueOVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressOVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameOVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/GroupOVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=AdminsOVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN=true
Última modificação em 6 de outubro de 2026
Esta página foi útil?
Assistant
Responses are generated using AI and may contain mistakes.