Autenticación
Registro de usuarios
La configuración por defecto de Weblate es utilizar python-social-auth, un formulario en el sitio web para gestionar el registro de nuevos usuarios. Después de confirmar su correo electrónico, un nuevo usuario puede contribuir o autenticarse utilizando uno de los servicios de terceros.
También puedes desactivar el registro de nuevos usuarios mediante REGISTRATION_OPEN
.
Los intentos de autenticación están sujetos a Rate limiting.
Dorsales de autenticación
La solución incorporada de Django se utiliza para la autenticación, incluyendo varias opciones sociales para hacerlo. Su uso permite importar la base de datos de usuarios de otros proyectos basados en Django (ver Migrar de Pootle).
Django también se puede configurar para configurar otros medios.
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
Por defecto settings.py
viene con un set razonable de 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.
Además, puedes instalar django-zxcvbn-password que ofrece estimaciones bastante realistas de la dificultad de las contraseñas y permite rechazar las contraseñas por debajo de un determinado umbral.
Autenticación por SAML
Nuevo en la versión 4.1.1.
Por favor, sigue las instrucciones de Python Social Auth para la configuración. Diferencias notables:
Weblate soporta un único IDP que se debe llamar
weblate
enSOCIAL_AUTH_SAML_ENABLED_IDPS
.La URL de los metadatos XML de SAML es
/accounts/metadata/saml/
.Los siguientes ajustes se rellenan automáticamente:
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_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"
}
La configuración por defecto extrae los detalles del usuario de los siguientes atributos, configura tu IDP para proporcionarlos:
Atributo |
Referencia de URI de SAML |
---|---|
Nombre completo |
|
Nombre |
|
Apellidos |
|
Correo electrónico |
|
Nombre de usuario |
|
Consejo
El ejemplo anterior y la imagen Docker definen un IDP etiquetado: weblate
. Es posible que tengas que configurar esta cadena como Relay en tu IDP.
Ver también
Autenticación LDAP
La autenticación LDAP puede lograrse mejor utilizando el paquete django-auth-ldap. Puedes instalarlo por los medios habituales:
# Using PyPI
pip install django-auth-ldap>=1.3.0
# Using apt-get
apt-get install python-django-auth-ldap
Consejo
Este paquete está incluido en el contenedor Docker, véase Instalar con Docker.
Nota
Hay algunas incompatibilidades en el módulo LDAP 3.1.0 de Python, que podrían impedirte utilizar esa versión. Si se produce el error AttributeError: “module” object has no attribute “_trace_level”, podría ayudar la actualización de python-ldap a la versión 3.0.0.
Una vez que tengas el paquete instalado, lo puedes enlazar a la autenticación de 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
Debes eliminar 'social_core.backends.email.EmailAuth'
de la configuración AUTHENTICATION_BACKENDS
, de lo contrario los usuarios podrán establecer su contraseña en Weblate, y autenticarse usando eso. Sigue siendo necesario mantener 'weblate.accounts.auth.WeblateUserBackend'
para hacer los permisos y facilitar los usuarios anónimos. También te permitirá iniciar sesión con una cuenta de administrador local, si la has creado (por ejemplo, usando createadmin
).
Uso de la contraseña de enlace
Si no puedes usar el enlace directo para la autenticación, tendrás que utilizar la búsqueda y proporcionar un usuario para el enlace de la búsqueda. Por ejemplo:
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.
Consulta su documentación para obtener instrucciones de configuración genéricas en Django Framework.
Nota
Por defecto, Weblate confía en los servicios de autenticación de terceros para proporcionar una dirección de correo electrónico validada. Si algunos de los servicios que deseas utilizar no lo soportan, por favor, ejecuta la validación del correo electrónico en el lado de Weblate configurando FORCE_EMAIL_VALIDATION para ellos. Por ejemplo:
Ver también
Pipeline
Habilitar backends individuales es bastante fácil, sólo es cuestión de añadir una entrada al ajuste
AUTHENTICATION_BACKENDS
y posiblemente añadir las claves necesarias para un método de autenticación determinado. Ten en cuenta que algunos backends no proporcionan el correo electrónico del usuario por defecto, tienes que solicitarlo explícitamente, de lo contrario Weblate no será capaz de acreditar adecuadamente las contribuciones de los usuarios.Consejo
La mayoría de los backends de autenticación requieren HTTPS. Una vez que el HTTPS esté habilitado en tu servidor web, por favor configura Weblate para que lo informe correctamente usando
ENABLE_HTTPS
, o medianteWEBLATE_ENABLE_HTTPS
en el contenedor Docker.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
Tienes que registrar una aplicación OAuth en GitHub y luego decirle a Weblate todos sus secretos:
GitHub debe estar configurado para tener una callback a la URL como
https://example.com/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://example.com/accounts/complete/github-org/
andhttps://example.com/accounts/complete/github-teams/
.Nota
La URL callback proporcionada por Weblate durante la autenticación incluye el dominio configurado. En caso de que se produzcan errores sobre la falta de coincidencia de la URL, es posible que desees arreglar esto, ver Set correct site domain.
Ver también
GitHub
Autenticación por Bitbucket
Tienes que registrar una aplicación en Bitbucket y luego decirle a Weblate todos sus secretos:
Nota
La URL callback proporcionada por Weblate durante la autenticación incluye el dominio configurado. En caso de que se produzcan errores sobre la falta de coincidencia de la URL, es posible que desees arreglar esto, ver 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+.
La URL de redirección es
https://WEBLATE SERVER/accounts/complete/google-oauth2/
Nota
La URL callback proporcionada por Weblate durante la autenticación incluye el dominio configurado. En caso de que se produzcan errores sobre la falta de coincidencia de la URL, es posible que desees arreglar esto, ver Set correct site domain.
Ver también
Google
OAuth 2 de Facebook
Como es habitual con los servicios OAuth 2, tienes que registrar tu aplicación en Facebook. Una vez hecho esto, puedes configurar Weblate para utilizarla:
La URL de redirección es
https://WEBLATE SERVER/accounts/complete/facebook/
Nota
La URL callback proporcionada por Weblate durante la autenticación incluye el dominio configurado. En caso de que se produzcan errores sobre la falta de coincidencia de la URL, es posible que desees arreglar esto, ver Set correct site domain.
Ver también
Facebook
OAuth 2 de GitLab
Para utilizar GitLab OAuth 2, es necesario registrar una aplicación en <https://gitlab.com/profile/applications>.
La URL de redirección es
https://WEBLATE SERVER/accounts/complete/gitlab/
y asegúrate de marcar el ámbito read_user.Nota
La URL callback proporcionada por Weblate durante la autenticación incluye el dominio configurado. En caso de que se produzcan errores sobre la falta de coincidencia de la URL, es posible que desees arreglar esto, ver Set correct site domain.
Ver también
GitLab
Active Directory de Microsoft Azure
Puede configurarse Weblate para utilizar inquilinos comunes o específicos para la autenticación.
La URL redireccionada es
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/
para las actividades comunes y``https://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/`` para la autenticación específica del usuario.Nota
La URL callback proporcionada por Weblate durante la autenticación incluye el dominio configurado. En caso de que se produzcan errores sobre la falta de coincidencia de la URL, es posible que desees arreglar esto, ver Set correct site domain.
Ver también
Microsoft Azure Active Directory
Slack
Para utilizar Slack OAuth 2, necesitas registrar una aplicación en <https://api.slack.com/apps>.
La URL redireccionada es
https://WEBLATE SERVER/accounts/complete/slack/
.Nota
La URL callback proporcionada por Weblate durante la autenticación incluye el dominio configurado. En caso de que se produzcan errores sobre la falta de coincidencia de la URL, es posible que desees arreglar esto, ver Set correct site domain.
Ver también
Slack
Anulación de los nombres e iconos de los métodos de autenticación
Puedes anular el nombre y el icono del método de autenticación utilizando la configuración como
SOCIAL_AUTH_<NAME>_IMAGE
ySOCIAL_AUTH_<NAME>_TITLE
. Por ejemplo, el nombre de anulación para Auth0 se vería como:Desactivar la autenticación por contraseña
La autenticación por correo electrónico y contraseña puede desactivarse eliminando
social_core.backends.email.EmailAuth
desdeAUTHENTICATION_BACKENDS
. Mantén siempreweblate.accounts.auth.WeblateUserBackend
, es necesaria para la funcionalidad principal de Weblate.Disabling e-mail authentication will disable all e-mail related functionality – user invitation or password reset feature.
Truco
You can still use password authentication for the admin interface, for users you manually create there. Just navigate to
/admin/login/
.Por ejemplo, la autenticación utilizando sólo el proveedor Open ID de openSUSE se puede lograr con lo siguiente: