Autenticação¶
Registo de utilizador¶
A configuração predefinida para o Weblate é utilizar python-social-auth, um formulário no “”site”” da Web para lidar com o registo de novos utilizadores. Depois de confirmar os seus “”e-mails””, um novo utilizador pode contribuir ou autenticar para utilizar um dos serviços de terceiros.
Também pode desativar o registo de novos utilizadores configurando REGISTRATION_OPEN.
As tentativas de autenticação estão sujeitas a Limitação de taxa.
Backends de autenticação¶
O Weblate utiliza Django para autenticação. Isto inclui autenticação integrada baseada em palavra-passe, autenticação social e backends de autenticação de terceiros para Django.
Utilizar a autenticação integrada do Django signfica que pode importar a base de dados dos utilizadores de outros projetos baseados no Django (consulte Migrando de Pootle).
Veja também
Configurações de autenticação descreve como configurar a autenticação na imagem oficial do Docker.
Autenticação por palavra-passe¶
O settings.py padrão vem com um conjunto razoável de AUTH_PASSWORD_VALIDATORS que garante que palavras-passe fracas não sejam permitidas. Pode personalizar esta configuração para corresponder à sua política de palavra-passe.
Além disso, também pode instalar o django-zxcvbn-password-validator que fornece estimativas bastante realistas para dificuldade da palavra-passe e permite rejeitar palavras-passe abaixo de um determinado limite.
Autenticação por SAML¶
Added in version 4.1.1.
Alterado na versão 5.12: As dependências para autenticação SAML não estão mais incluídas nos extras padrão all. Precisa incluir saml ao instalar o pacote Weblate usando pip (uv pip install Weblate[all,saml]).
Por favor, siga as instruções do Python Social Auth para configuração. Diferenças notáveis:
O Weblate suporta a única IDP que tem de ser chamada de
weblateemSOCIAL_AUTH_SAML_ENABLED_IDPS.The SAML XML metadata URL is
/accounts/metadata/saml/, which is also an entity ID.The sign-in URL is
/accounts/complete/saml/(also known as ACS URL).As definições a seguir são preenchidas automaticamente:
SOCIAL_AUTH_SAML_SP_ENTITY_ID,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Exemplo de configuração:
# Authentication configuration
AUTHENTICATION_BACKENDS = (
"social_core.backends.email.EmailAuth",
"social_core.backends.saml.SAMLAuth",
"weblate.accounts.auth.WeblateUserBackend",
)
# Social auth backends setup
SOCIAL_AUTH_SAML_SP_ENTITY_ID = f"https://{SITE_DOMAIN}/accounts/metadata/saml/"
SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = "-----BEGIN CERTIFICATE-----"
SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----"
SOCIAL_AUTH_SAML_ENABLED_IDPS = {
"weblate": {
"entity_id": "https://idp.testshib.org/idp/shibboleth",
"url": "https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO",
"x509cert": "MIIEDjCCAvagAwIBAgIBADA ... 8Bbnl+ev0peYzxFyF5sQA==",
}
}
SOCIAL_AUTH_SAML_ORG_INFO = {
"en-US": {
"name": "example",
"displayname": "Example Inc.",
"url": "http://example.com"
}
}
SOCIAL_AUTH_SAML_TECHNICAL_CONTACT = {
"givenName": "Tech Gal",
"emailAddress": "technical@example.com"
}
SOCIAL_AUTH_SAML_SUPPORT_CONTACT = {
"givenName": "Support Guy",
"emailAddress": "support@example.com"
}
You can generate a new pair of keys using:
openssl req -newkey rsa:4096 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.key
The default configuration extracts user details from following attributes, configure your IdP to provide them:
Atributo |
Referência de URI SAML |
|---|---|
Nome completo |
|
Primeiro nome |
|
Nome familiar |
|
|
|
Nome de utilizador |
|
When configuring Weblate SP in your IdP, it is recommended to choose persistent Name ID format.
Dica
The example above and the Docker image define an IdP called weblate.
You might need to configure this string as Relay in your IdP.
Nota
Weblate authentication relies on the RelayState parameter to be passed
through the authentication process. This needs to be configured with some
identity providers:
Veja também
Autenticação por LDAP¶
A autenticação por LDAP pode ser melhor alcançada utilizando o pacote django-auth-ldap. Pode instalá-lo através dos meios habituais:
# Using PyPI
uv pip install 'django-auth-ldap>=1.3.0'
# Using apt-get
apt-get install python-django-auth-ldap
Dica
Este pacote está incluído no contentor Docker, consulte Instalar utilizando Docker.
Nota
Há algumas incompatibilidades no módulo Python LDAP 3.1.0, o que o pode impedir de usar essa versão. Se obter o erro AttributeError: “module” object has no attribute “_trace_level”, fayendo o downgrade para python-ldap 3.0.0 pode ajudar.
Assim que tenha instalado o pacote, pode ligá-lo à autenticação do Django:
# Add LDAP backed, keep Django one if you want to be able to sign in
# even without LDAP for admin account
AUTHENTICATION_BACKENDS = (
"django_auth_ldap.backend.LDAPBackend",
"weblate.accounts.auth.WeblateUserBackend",
)
# LDAP server address
AUTH_LDAP_SERVER_URI = "ldaps://ldap.example.net"
# DN to use for authentication
AUTH_LDAP_USER_DN_TEMPLATE = "cn=%(user)s,o=Example"
# Depending on your LDAP server, you might use a different DN
# like:
# AUTH_LDAP_USER_DN_TEMPLATE = 'ou=users,dc=example,dc=com'
# List of attributes to import from LDAP upon sign in
# Weblate stores full name of the user in the full_name attribute
AUTH_LDAP_USER_ATTR_MAP = {
"full_name": "name",
# Use the following if your LDAP server does not have full name
# Weblate will merge them later
# 'first_name': 'givenName',
# 'last_name': 'sn',
# Email is required for Weblate (used in VCS commits)
"email": "mail",
}
# Optional: route "Forgot your password?" to your LDAP self-service page
PASSWORD_RESET_URL = "https://id.example.net/password-reset/"
# Hide the registration form
REGISTRATION_OPEN = False
Nota
Deve remover 'social_core.backends.email.EmailAuth' da configuração AUTHENTICATION_BACKENDS; caso contrário, os utilizadores poderão definir a sua palavra-passe no Weblate e autenticar usando-o. Manter 'weblate.accounts.auth.WeblateUserBackend' ainda é necessário para fazer permissões e facilitar utilizadores anônimos. Ele também permitirá que faça login usando uma conta administrativa local, se a criou (por exemplo, usando createadmin).
Usando palavra-passe associada¶
Se não puder utilizar a associação direta para autenticação, terá de utilizar a procura, e fornecer um utilizador para associar à mesma. Por exemplo:
import ldap
from django_auth_ldap.config import LDAPSearch
AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"ou=users,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
)
Integração com o Active Directory¶
import ldap
from django_auth_ldap.config import LDAPSearch, NestedActiveDirectoryGroupType
AUTH_LDAP_BIND_DN = "CN=ldap,CN=Users,DC=example,DC=com"
AUTH_LDAP_BIND_PASSWORD = "password"
# User and group search objects and types
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"CN=Users,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"
)
# Make selected group a superuser in Weblate
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
# is_superuser means user has all permissions
"is_superuser": "CN=weblate_AdminUsers,OU=Groups,DC=example,DC=com",
}
# Map groups from AD to Weblate
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
"OU=Groups,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(objectClass=group)"
)
AUTH_LDAP_GROUP_TYPE = NestedActiveDirectoryGroupType()
AUTH_LDAP_FIND_GROUP_PERMS = True
# Optionally enable group mirroring from LDAP to Weblate
# AUTH_LDAP_MIRROR_GROUPS = True
Veja também
Autenticação por CAS¶
Autenticação por CAS pode ser obtida através de um pacote como o Django CAS NG.
O primeiro passo é divulgar o campo de “”e-mail”” do utilizador via CAS. Isto tem que ser configurado no próprio servidor CAS e requer que utilize pelo menos CAS v2, já que o CAS v1 não suporta atributos.
O segundo passo é atualizar o Weblate para utilizar o seu servidor CAS e os atributos.
Para instalar Django CAS NG:
uv pip install django-cas-ng
Assim que tiver instalado o pacote, pode ligá-lo ao sistema de autenticação do Django modificando o ficheiro settings.py:
# Add CAS backed, keep the Django one if you want to be able to sign in
# even without LDAP for the admin account
AUTHENTICATION_BACKENDS = (
"django_cas_ng.backends.CASBackend",
"weblate.accounts.auth.WeblateUserBackend",
)
# CAS server address
CAS_SERVER_URL = "https://cas.example.net/cas/"
# Add django_cas_ng somewhere in the list of INSTALLED_APPS
INSTALLED_APPS = (..., "django_cas_ng")
Finalmente, um sinal pode ser usado para mapear o campo de e-mail para o objeto do utilizador. Para que isso funcione, tem que importar o sinal do pacote django-cas-ng e conectar o seu código com este sinal. Fazer isto em configurações de ficheiro pode causar problemas, portanto, é sugerido pôr-lo:
No método
django.apps.AppConfig.ready()da configuração do seu appNo ficheiro
urls.pydo projeto (quando não há modelos)
from django_cas_ng.signals import cas_user_authenticated
from django.dispatch import receiver
@receiver(cas_user_authenticated)
def update_user_email_address(sender, user=None, attributes=None, **kwargs):
# If your CAS server does not always include the email attribute
# you can wrap the next two lines of code in a try/catch block.
user.email = attributes["email"]
user.save()
Configurando autenticação por Django de terceiros¶
Geralmente, qualquer “”plug-in”” de autenticação Django deveria funcionar com o Weblate. Basta seguir as instruções para o “”plug-in””, lembre-se de manter o “”backend”” do utilizador Weblate instalado.
Veja também
Normalmente, a instalação consiste em adicionar uma autenticação de «backend» para AUTHENTICATION_BACKENDS e a instalação de uma aplicação de autenticação (se existir uma) em INSTALLED_APPS:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Autenticação de dois fatores¶
Added in version 5.7.
Dica
A autenticação de dois fatores adiciona outra camada de segurança à sua conta, exigindo mais do que apenas uma senha para a autenticação.
Weblate suporta os seguintes fatores secundários:
- Chaves de segurança (WebAuthn)
São suportados ambos, códigos de acesso e de segurança.
Os Passkeys validam a sua identidade usando toque, reconhecimento facial, uma palavra-passe de dispositivo ou um PIN, pois incluem a verificação do utilizador.
As chaves de segurança são credenciais do WebAuthn que só podem ser usadas como um segundo fator de autenticação e que validam apenas a presença do utilizador.
- Aplicações de autenticação (TOTP)
As aplicações de autenticação e as extensões de navegador, tais como Aegis, Bitwarden, Google Authenticator, 1Password, Authy, Microsoft Authenticator, etc. geram palavras-passe temporizadas de utilização única que são utilizadas como um segundo fator para verificar a sua identidade quando solicitado durante a autenticação.
- Códigos de recuperação
Os códigos de recuperação podem ser usados para aceder à sua conta caso perca o acesso ao seu dispositivo e não consiga receber os códigos de autenticação a dois fatores.
Guarde os seus códigos de recuperação de forma tão segura quanto a sua senha. Recomendamos que os guarde num gestor de senhas como Bitwarden, 1Password, Authy ou Keeper.
Cada utilizador pode configurar isto no Conta e o segundo fator será necessário para se autenticar, para além do método de autenticação existente.
This can be enforced for users at the project (see Autenticação de dois fatores obrigatória) or team level. In site-wide deployments, this can also be used to enforce two-factor authentication for all users by enabling it on the default Users team, which is assigned automatically to new users by automatic team assignment.
As permissões de uma equipa com autenticação de dois fatores aplicada não serão aplicadas a utilizadores que não a tenham configurado.
Autenticação social¶
Graças ao Welcome to Python Social Auth’s documentation!, o Weblate suporta a autenticação utilizando muitos serviços de terceiros, tais como GitLab, Ubuntu, Fedora, etc.
Por favor, verifique a documentação deles por instruções de configuração genéricas em Django Framework.
Nota
Por predefinição, o Weblate conta com serviços de autenticação de terceiros para fornecer um endereço de correio eletrónico validado. Se alguns dos serviços que deseja utilizar não suportarem isto, por favor, aplique a validação de “”e-mail”” no lado do Weblate configurando FORCE_EMAIL_VALIDATION para eles. Por exemplo:
Veja também
Pipeline
Permitir backends individuais é bastante fácil, é apenas uma questão de adicionar uma entrada à configuração
AUTHENTICATION_BACKENDSe possivelmente adicionar chaves necessárias para um determinado método de autenticação. Por favor, note que alguns backends não fornecem e-mails do utilizador por predefinição, tem que solicitá-lo explicitamente, caso contrário o Weblate não será capaz de corretamente dar mérito às contribuições que os utilizadores fazem.Dica
A maioria dos backends de autenticação exige HTTPS. Assim que o HTTPS estiver ativado no seu servidor web, configure o Weblate para relatá-lo corretamente usando
ENABLE_HTTPSou, no contentor Docker,WEBLATE_ENABLE_HTTPS.Veja também
Python Social Auth backend
Autenticação por OpenID¶
Para serviços baseados em OpenID, geralmente é apenas uma questão de ativá-los. A secção a seguir permite a autenticação OpenID para OpenSUSE, Fedora e Ubuntu:
Veja também
OpenID
Autenticação por GitHub¶
Precisa registar uma aplicação de OAuth no GitHub e, em seguida, dizer ao Weblate todos os seus segredos:
O GitHub deve ser configurado para ter URL de um retorno de chamada como
https://WEBLATE SERVER/accounts/complete/github/.Existem backends de autenticação semelhantes para o GitHub para Organizações e o GitHub para Equipas. As suas configurações são denominadas
SOCIAL_AUTH_GITHUB_ORG_*eSOCIAL_AUTH_GITHUB_TEAM_*e requerem configuração adicional do escopo –SOCIAL_AUTH_GITHUB_ORG_NAMEouSOCIAL_AUTH_GITHUB_TEAM_ID. Os seus URLs de retorno de chamada sãohttps://WEBLATE SERVER/accounts/complete/github-org/ehttps://WEBLATE SERVER/accounts/complete/github-teams/.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
GitHub
Autenticação por GitHub EE¶
Precisa registar uma app de OAuth no GitHub EE e, em seguida, informar ao Weblate todos as suas chaves secretas:
A app de autenticação do GitHub OAuth deve ser configurado para ter a URL de retorno como
https://WEBLATE SERVER/accounts/complete/github-enterprise/.Em vez do GitHub OAuth App, o GitHub App também pode ser utilizado. Com o GitHub, as permissões da aplicação podem ser concedidas ao nível de repositórios, organizações e/ou utilizadores. Se decidir utilizar o GitHub App terá de ativar a permissão «Acesso: apenas para leitura» para Utilizadores - <Email addresses> e Organização - <Members>.
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
GitHub Enterprise
Autenticação por Bitbucket¶
Precisa registar uma aplicação no Bitbucket e dar todos os segredos dele ao Weblate:
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Bitbucket
Google OAuth 2¶
To use Google OAuth 2, you need to register an OAuth application at <https://console.developers.google.com/>.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/google-oauth2/.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Google
OAuth 2 do Facebook¶
Como de costume com os serviços OAuth 2, precisa registar a sua aplicação no Facebook. Uma vez feito, pode configurar o Weblate para usá-lo:
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/facebook/.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Facebook
OAuth 2 do GitLab¶
Para usar o OAuth 2 do GitLab, precisa registar uma aplicaçaõ em <https://gitlab.com/profile/applications>.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/gitlab/e garantir que marque o escopo read_user.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
GitLab
OAuth 2 do Gitea¶
Para usar o OAuth 2 do Gitea, precisa registar uma aplicação em
https://GITEASERVER/user/settings/applications.A URL de redirecionamento é
https://WEBLATESERVER/accounts/complete/gitea/.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Nota
A configuração acima também funciona com o Forgejo; para um exemplo de implantação de produção com o Forgejo, consulte Codeberg Translate.
Veja também
Gitea
Microsoft Entra ID¶
Azure Active Directory (Azure AD) is now Microsoft Entra ID. Weblate keeps the
azuread-oauth2andazuread-tenant-oauth2backend names for compatibility with the underlying Python Social Auth backends and existing deployments.Weblate pode ser configurado para usar inquilinos comuns ou específicos para autenticação.
O URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/azuread-oauth2/para autenticação comum ehttps://SERVIDOR WEBLATE/accounts/complete/azuread-tenant-oauth2/para autenticação específica do inquilino.Precisará do seguinte:
Application (client) ID is available on the app registration overview in the Microsoft Entra admin center. Object ID is not used in Weblate.
A ID do Diretório (arrendatário) é necessária para a autenticação com escopo de arrendatário, o que geralmente é desejado.
Secret value is displayed once you create a client secret for the app registration. Secret ID is not used in Weblate.
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Microsoft Azure Active Directory
Slack¶
Para usar o OAuth 2 do Slack, precisa registar uma aplicação em <https://api.slack.com/apps>.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/slack/.Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de obter erros sobre incompatibilidade de URL, pode corrigir isso, consulte Definir domínio correto do site.
Veja também
Slack
A substituir nomes e ícones de métodos de autenticação¶
You can override the authentication method display name and icon using settings as
SOCIAL_AUTH_<NAME>_IMAGEandSOCIAL_AUTH_<NAME>_TITLE. For example overriding naming for Auth0 would look like:Desativar autenticação por palavra-passe¶
Autenticação por e-mail e palavra-passe pode ser desativada através da remoção de
social_core.backends.email.EmailAuthdeAUTHENTICATION_BACKENDS. Mantenha sempreweblate.accounts.auth.WeblateUserBackendlá, pois é necessário para a funcionalidade central do Weblate.Desativar a autenticação por “”e-mail”” desativará todas as funcionalidades relacionadas com o “”e-mail”” - funcionalidades de convite a utilizadores ou de redefinição de palavra-passe.
Dica
Ainda pode usar autenticação por palavra-passe para a interface administrativa, para utilizadores que cria manualmente lá. Basta navegar para
/admin/login/.Por exemplo, a autenticação a usar apenas o provedor Open ID do openSUSE pode ser alcançada a usar o seguinte: