Autenticação#
Registro de usuário#
A configuração padrão para Weblate é usar python-social-auth, um formulário no site para lidar com o registro de novos usuários. Depois de confirmar seu e-mail, um novo usuário pode contribuir ou autenticar usando um dos serviços de terceiros.
Você também pode desativar o registro de novos usuários usando REGISTRATION_OPEN
.
As tentativas de autenticação estão sujeitas a Limitação de taxa.
Backends de autenticação#
A solução embutida do Django é utilizada para autenticação, incluindo várias opções sociais para o fazer. Utilizando-a, você pode importar o banco de dados de usuários de outros projetos baseados no Django (veja Migrando de Pootle).
Django pode, adicionalmente, ser configurado para autenticar em outros meios também.
Ver também
Configurações de autenticação descreve como configurar a autenticação na imagem oficial do Docker.
Autenticação por senha#
O settings.py
padrão vem com um razoável conjunto de AUTH_PASSWORD_VALIDATORS
:
As senhas não podem ser muito similares às suas outras informações pessoais.
As senhas devem conter no mínimo 10 caracteres.
As senhas não podem ser uma senha comumente usada.
As senhas não podem ser inteiramente numéricas.
As senhas não podem consistir em um único caractere ou apenas espaço em branco.
As senhas não podem corresponder a uma senha que você usou no passado.
Você pode personalizar esta configuração para corresponder à sua política de senha.
Além disso, você também pode instalar o django-zxcvbn-password o que dá bastante estimativas realistas de senha dificuldade e permite rejeitar senhas abaixo de um determinado limite.
Autenticação por SAML#
Novo na versão 4.1.1.
Siga as instruções do Python Social Auth para configuração. Diferenças notáveis:
Weblate tem suporte a único IDP que tem de ser chamado de
weblate
emSOCIAL_AUTH_SAML_ENABLED_IDPS
.A URL de metadados XML de SAML é
/accounts/metadata/saml/
.As configuraçõ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==",
"attr_name": "full_name",
"attr_username": "username",
"attr_email": "email",
}
}
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"
}
A configuração padrão extrai detalhes do usuário dos seguintes atributos, configure seu IDP para fornecê-los:
Atributo |
Referência de URI SAML |
---|---|
Nome completo |
|
Primeiro nome |
|
Sobrenome |
|
|
|
Nome de usuário |
|
Dica
O exemplo acima e a imagem do Docker definem um IDP chamado weblate
. Pode ser preciso configurar este texto como Relay em seu IDP.
Ver também
Autenticação por LDAP#
A autenticação por LDAP pode ser melhor alcançada utilizando o pacote django-auth-ldap. Você pode instalá-lo através dos meios habituais:
# Using PyPI
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 contêiner Docker, veja Instalando usando Docker.
Nota
Há algumas incompatibilidades no módulo Python LDAP 3.1.0, o que pode impedir você de usar essa versão. Se você obter o erro AttributeError: ‘module’ object has no attribute ‘_trace_level’, fazer o downgrade para python-ldap 3.0.0 pode ajudar.
Uma vez que você tenha o pacote instalado, você pode conectá-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",
}
# Hide the registration form
REGISTRATION_OPEN = False
Nota
You should remove 'social_core.backends.email.EmailAuth'
from the
AUTHENTICATION_BACKENDS
setting, otherwise users will be able to set
their password in Weblate, and authenticate using that. Keeping
'weblate.accounts.auth.WeblateUserBackend'
is still needed in order to
make permissions and facilitate anonymous users. It will also allow you
to sign in using a local admin account, if you have created it (e.g. by using
weblate createadmin
).
Usando senha associada#
Se você não puder usar associação direta para autenticação, você precisará usar a pesquisa e fornecer um usuário para associar à pesquisa. 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 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
Ver também
Autenticação por CAS#
A autenticação por CAS pode ser alcançada usando um pacote como o django-cas-ng.
O primeiro passo é divulgar o campo de e-mail do usuário via CAS. Isso tem que ser configurado no próprio servidor CAS, e requer que você execute pelo menos CAS v2, já que o CAS v1 não tem suporte a atributos.
O segundo passo é atualizar o Weblate para utilizar o seu servidor CAS e os seus atributos.
Para instalar django-cas-ng:
pip install django-cas-ng
Uma vez que o pacote instalado, você pode conectá-lo ao sistema de autenticação do Django modificando o arquivo 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 usuário. Para que isso funcione, você tem que importar o sinal do pacote django-cas-ng e conectar seu código com este sinal. Fazer isso em configurações de arquivo pode causar problemas, portanto, é sugerido colocá-lo:
No método
django.apps.AppConfig.ready()
da configuração do seu aplicativoNo arquivo
urls.py
do 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()
Ver também
Configurando autenticação por Django de terceiros#
Geralmente, qualquer plugin de autenticação Django deve funcionar com Weblate. Basta seguir as instruções do plugin, lembrando de manter o backend do usuário Weblate instalado.
Ver também
Normalmente, a instalação consiste em adicionar uma autenticação de backend a AUTHENTICATION_BACKENDS
e a instalar um aplicativo de autenticação (se houver) no INSTALLED_APPS
:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Autenticação social#
Graças ao Welcome to Python Social Auth’s documentation!, o Weblate tem suporte a autenticação utilizando muitos serviços de terceiros, tais como GitLab, Ubuntu, Fedora etc.
Por favor, verifique sua documentação para as instruções de configuração genéricas em Django Framework.
Nota
Por padrão, o Weblate conta com serviços de autenticação de terceiros para fornecer um endereço de e-mail validado. Se alguns dos serviços que você deseja usar não suportarem isso, por favor, aplique a validação de e-mail no lado Weblate configurando FORCE_EMAIL_VALIDATION para eles. Por exemplo:
Ver também
Pipeline
Permitir backends individuais é bastante fácil, é apenas uma questão de adicionar uma entrada à configuração
AUTHENTICATION_BACKENDS
e 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 usuário por padrão, você tem que solicitá-lo explicitamente, caso contrário o Weblate não será capaz de pagar corretamente as contribuições que os usuários fazem.Dica
A maioria dos backends de autenticação exige HTTPS. Assim que o HTTPS estiver habilitado em seu servidor web, configure o Weblate para relatá-lo corretamente usando
ENABLE_HTTPS
ou, no contêiner Docker,WEBLATE_ENABLE_HTTPS
.Ver também
Backend de Python Social Auth
Autenticação por OpenID#
Para serviços baseados em OpenID, geralmente é apenas uma questão de habilitá-los. A seção a seguir permite a autenticação OpenID para OpenSUSE, Fedora e Ubuntu:
Ver também
OpenID
Autenticação por GitHub#
Você precisa registrar um aplicativo OAuth no GitHub e, em seguida, dizer ao Weblate todos os seus segredos:
The GitHub should be configured to have callback URL as
https://WEBLATE SERVER/accounts/complete/github/
.There are similar authentication backends for GitHub for Organizations and GitHub for Teams. Their settings are named
SOCIAL_AUTH_GITHUB_ORG_*
andSOCIAL_AUTH_GITHUB_TEAM_*
, and they require additional setting of the scope -SOCIAL_AUTH_GITHUB_ORG_NAME
orSOCIAL_AUTH_GITHUB_TEAM_ID
. Their callback URLs arehttps://WEBLATE SERVER/accounts/complete/github-org/
andhttps://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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
GitHub
GitHub EE authentication#
You need to register an OAuth App on GitHub EE and then tell Weblate all its secrets:
The GitHub OAuth App should be configured to have callback URL as
https://WEBLATE SERVER/accounts/complete/github-enterprise/
.Instead GitHub OAuth App, GitHub App can also be used. With GitHub App permissions can be granted on repositories, organisation and/or user level. If you decide to use GitHub App, you need to enable Access: Read-only permission for Users - <Email addresses> and Organisation - <Members>.
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
GitHub Enterprise
Autenticação por Bitbucket#
Você precisa registrar um aplicativo no Bitbucket e, em seguida, dizer ao Weblate todos os seus segredos:
Nota
O Weblate fornecia URL de retorno de chamada durante a autenticação inclui domínio configurado. No caso de você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Bitbucket
Google OAuth 2#
Para usar o OAuth 2 do Google, você precisa se registrar em um aplicativo em <https://console.developers.google.com/> e ativar a API do Google+.
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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Google
OAuth 2 do Facebook#
Como de costume com os serviços OAuth 2, você precisa registrar seu aplicativo no Facebook. Uma vez feito isso, você 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Facebook
OAuth 2 do GitLab#
Para usar o OAuth 2 do GitLab, você precisa registrar um aplicativo em <https://gitlab.com/profile/applications>.
A URL de redirecionamento é
https://SERVIDOR WEBLATE/accounts/complete/gitlab/
e garantir que você 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
GitLab
Active Directory do Microsoft Azure#
Weblate pode ser configurado para usar inquilinos comuns ou específicos para autenticação.
A 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.You will need following:
Application (client) ID can be obtained from application page. Object ID is not used in Weblate.
Directory (tenant) ID is needed for tenant scoped authentication, what is usually desired.
Secret value is displayed once you generate a secret for an application. 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Microsoft Azure Active Directory
Slack#
Para usar o OAuth 2 do Slack, você precisa cadastrar um aplicativo 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 você obter erros sobre incompatibilidade de URL, você pode querer corrigir isso, consulte Definir domínio correto do site.
Ver também
Slack
Substituindo nomes e ícones de métodos de autenticação#
Você pode substituir o nome de exibição do método de autenticação e o ícone usando configurações como
SOCIAL_AUTH_<NOME>_IMAGE
eSOCIAL_AUTH_<NOME>_TITLE
. Por exemplo, substituir a nomenclatura para Auth0 ficaria assim:Desativando autenticação por senha#
Autenticação por e-mail e senha pode ser desativada através da remoção de
social_core.backends.email.EmailAuth
deAUTHENTICATION_BACKENDS
. Mantenha sempreweblate.accounts.auth.WeblateUserBackend
lá, ele é necessário para a funcionalidade central do Weblate.Desabilitar a autenticação por e-mail desabilitará todas as funcionalidades relacionadas a e-mail – convite a usuários ou recurso de redefinição de senha.
Dica
Você ainda pode usar autenticação por senha para a interface administrativa, para usuários que você cria manualmente lá. Basta navegar para
/admin/login/
.Por exemplo, a autenticação usando apenas o provedor Open ID do openSUSE pode ser alcançada usando o seguinte: