Autenticación¶
Registro de usuarios¶
The default setup for Weblate is to use python-social-auth, a form on the website to handle registration of new users. After confirming their e-mail a new user can contribute or authenticate by using one of the third party services.
You can also turn off registration of new users using
REGISTRATION_OPEN
.
Los intentos de autenticación están sujetos a Rate limiting.
Dorsales de autenticación¶
The built-in solution of Django is used for authentication, including various social options to do so. Using it means you can import the user database of other Django-based projects (see Migrar de Pootle).
Django can additionally be set up to authenticate against other means too.
Ver también
Configuración de autenticación describe cómo configurar la autenticación en la imagen oficial para Docker.
Autenticación por contraseña¶
The default settings.py
comes with a reasonable set of
AUTH_PASSWORD_VALIDATORS
:
Las contraseñas no deben asemejarse demasiado a otros datos personales suyos.
Las contraseñas deben tener por lo menos 10 caracteres de longitud.
Las contraseñas no pueden figurar entre las más comúnmente utilizadas.
Las contraseñas no pueden consistir enteramente de números.
Las contraseñas no pueden consistir de un único carácter o de solo espacios.
Las contraseñas no pueden coincidir con alguna que haya utilizado en el pasado.
Puede personalizar esta configuración para que se ajuste a su normativa de contraseñas.
Additionally you can also install django-zxcvbn-password which gives quite realistic estimates of password difficulty and allows rejecting passwords below a certain threshold.
Autenticación por SAML¶
Nuevo en la versión 4.1.1.
Please follow the Python Social Auth instructions for configuration. Notable differences:
Weblate supports single IDP which has to be called
weblate
inSOCIAL_AUTH_SAML_ENABLED_IDPS
.The SAML XML metadata URL is
/accounts/metadata/saml/
.Following settings are automatically filled in:
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Ejemplo de configuración:
# 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_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",
}
}
Ver también
Autenticación LDAP¶
LDAP authentication can be best achieved using the django-auth-ldap package. You can install it via usual means:
# Using PyPI
pip install django-auth-ldap>=1.3.0
# Using apt-get
apt-get install python-django-auth-ldap
Advertencia
With django-auth-ldap older than 1.3.0 the Asignaciones de grupo automático will not work properly for newly created users.
Nota
There are some incompatibilities in the Python LDAP 3.1.0 module, which might prevent you from using that version. If you get error AttributeError: “module” object has no attribute “_trace_level”, downgrading python-ldap to 3.0.0 might help.
Once you have the package installed, you can hook it into the Django authentication:
# 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
createadmin
).
Using bind password¶
If you can not use direct bind for authentication, you will need to use search, and provide a user to bind for the search. For example:
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)"
)
Integración con 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 también
Autenticación CAS¶
Se puede implantar una autenticación CAS al utilizar un paquete como django-cas-ng.
El primer paso consiste en revelar el campo Correo electrónico del usuario mediante CAS. Esto debe configurarse en el propio servidor CAS, y necesitará ejecutar al menos la versión 2 de CAS, ya que CAS v1 no admite atributos.
El segundo paso será actualizar Weblate para que utilice el servidor y los atributos de CAS.
Para instalar django-cas-ng:
pip install django-cas-ng
Una vez que haya instalado el paquete, puede conectarlo con el sistema de autenticación de Django; para ello, modifique el archivo 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, se puede utilizar una señal para vincular el campo Correo electrónico y el objeto de usuario. Para que esto funcione, debe importar la señal del paquete django-cas-ng y conectar su código con esta señal. Realizar esto en el archivo de configuración puede causar problemas, por lo cual se recomienda ponerlo:
En el método
django.apps.AppConfig.ready()
de la configuración de su aplicaciónEn el archivo
urls.py
del proyecto (cuando no existan 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 también
Configurar la autenticación de Django de terceros¶
Generally any Django authentication plugin should work with Weblate. Just follow the instructions for the plugin, just remember to keep the Weblate user backend installed.
Ver también
Typically the installation will consist of adding an authentication backend to
AUTHENTICATION_BACKENDS
and installing an authentication app (if
there is any) into INSTALLED_APPS
:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Autenticación social¶
Gracias a Welcome to Python Social Auth’s documentation!, Weblate admite la autenticación a través de numerosos servicios de terceros, tales como GitLab, Ubuntu y Fedora, entre otros.
Please check their documentation for generic configuration instructions in Django Framework.
Nota
By default, Weblate relies on third-party authentication services to provide a validated e-mail address. If some of the services you want to use don’t support this, please enforce e-mail validation on the Weblate side by configuring FORCE_EMAIL_VALIDATION for them. For example:
Ver también
Pipeline
Enabling individual backends is quite easy, it’s just a matter of adding an entry to the
AUTHENTICATION_BACKENDS
setting and possibly adding keys needed for a given authentication method. Please note that some backends do not provide user e-mail by default, you have to request it explicitly, otherwise Weblate will not be able to properly credit contributions users make.Ver también
Dorsal de Python Social Auth
Autenticación por OpenID¶
Para servicios basados en OpenID basta con activarlos. En esta sección se describe cómo activar la autenticación por OpenID de OpenSUSE, Fedora y Ubuntu:
Ver también
OpenID
Autenticación por GitHub¶
You need to register an OAuth application on GitHub and then tell Weblate all its secrets:
The GitHub should be configured to have callback URL as
https://example.com/accounts/complete/github/
.Nota
Weblate provided callback URL during the authentication includes configured domain. In case you get errors about URL mismatch, you might want to fix this, see Set correct site domain.
Ver también
GitHub
Autenticación por Bitbucket¶
You need to register an application on Bitbucket and then tell Weblate all its secrets:
Nota
Weblate provided callback URL during the authentication includes configured domain. In case you get errors about URL mismatch, you might want to fix this, see Set correct site domain.
Ver también
Bitbucket
OAuth 2 de Google¶
Para utilizar OAuth 2 de Google, es necesario registrar una aplicación en <https://console.developers.google.com/> y activar la API de Google+.
The redirect URL is
https://WEBLATE SERVER/accounts/complete/google-oauth2/
Nota
Weblate provided callback URL during the authentication includes configured domain. In case you get errors about URL mismatch, you might want to fix this, see Set correct site domain.
Ver también
Google
OAuth 2 de Facebook¶
As per usual with OAuth 2 services, you need to register your application with Facebook. Once this is done, you can set up Weblate to use it:
The redirect URL is
https://WEBLATE SERVER/accounts/complete/facebook/
Nota
Weblate provided callback URL during the authentication includes configured domain. In case you get errors about URL mismatch, you might want to fix this, see Set correct site domain.
Ver también
Facebook
OAuth 2 de GitLab¶
For using GitLab OAuth 2, you need to register an application on <https://gitlab.com/profile/applications>.
The redirect URL is
https://WEBLATE SERVER/accounts/complete/gitlab/
and ensure you mark the read_user scope.Nota
Weblate provided callback URL during the authentication includes configured domain. In case you get errors about URL mismatch, you might want to fix this, see Set correct site domain.
Ver también
GitLab
Active Directory de Microsoft Azure¶
Weblate can be configured to use common or specific tenants for authentication.
The redirect URL is
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/
for common andhttps://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/
for tenant-specific authentication.Nota
Weblate provided callback URL during the authentication includes configured domain. In case you get errors about URL mismatch, you might want to fix this, see Set correct site domain.
Ver también
Microsoft Azure Active Directory
Slack¶
For using Slack OAuth 2, you need to register an application on <https://api.slack.com/apps>.
The redirect URL is
https://WEBLATE SERVER/accounts/complete/slack/
.Nota
Weblate provided callback URL during the authentication includes configured domain. In case you get errors about URL mismatch, you might want to fix this, see Set correct site domain.
Ver también
Slack
Desactivar la autenticación por contraseña¶
E-mail and password authentication can be turned off by removing
social_core.backends.email.EmailAuth
fromAUTHENTICATION_BACKENDS
. Always keepweblate.accounts.auth.WeblateUserBackend
there, it is needed for core Weblate functionality.Truco
You can still use password authentication for the admin interface, for users you manually create there. Just navigate to
/admin/
.For example authentication using only the openSUSE Open ID provider can be achieved using the following: