Autenticació¶
Registre d’usuari¶
La configuració predeterminada de Weblate és utilitzar python-social-auth, un formulari del lloc web per gestionar el registre de nous usuaris. Després de confirmar el seu correu electrònic, un nou usuari pot contribuir o autenticar-se mitjançant un dels serveis de tercers.
També podeu desactivar el registre d’usuaris nous mitjançant REGISTRATION_OPEN.
Els intents d’autenticació estan subjectes a Limitació de tarifes.
Backends d’autenticació¶
Weblate confia en Django per a l’autenticació. Això inclou l’autenticació integrada basada en contrasenyes, l’autenticació social i els backends d’autenticació de tercers per a Django.
L’ús de l’autenticació integrada de Django significa que podeu importar la base de dades d’usuaris d’altres projectes basats en Django (vegeu Migrant des de Pootle).
Vegeu també
Configuració d’autenticació descriu com configurar l’autenticació a la imatge oficial de Docker.
Autenticació de contrasenya¶
El settings.py predeterminat inclou un conjunt raonable de AUTH_PASSWORD_VALIDATORS que garanteix que no es permetin contrasenyes febles. Podeu personalitzar aquesta configuració perquè coincideixi amb la vostra política de contrasenyes.
A més, també podeu instal·lar django-zxcvbn-password-validator que ofereix estimacions força realistes de la dificultat de la contrasenya i permet rebutjar contrasenyes per sota d’un determinat llindar.
Autenticació SAML¶
Afegit a la versió 4.1.1.
Canviat a la versió 5.12: Les dependències per a l’autenticació SAML ja no s’inclouen als extres per defecte tots. Heu d’incloure saml mentre instal·leu el paquet Weblate amb pip (uv pip install Weblate[all,saml]).
Si us plau, seguiu les instruccions d’autenticació social de Python per a la configuració. Diferències notables:
Weblate admet IDP únic que s’ha d’anomenar
weblateaSOCIAL_AUTH_SAML_ENABLED_IDPS.L’URL de metadades XML de SAML és
/accounts/metadata/saml/, que també és un identificador d’entitat.L’URL d’inici de sessió és
/accounts/complete/saml/(també conegut com a URL ACS).La configuració següent s’omple automàticament:
SOCIAL_AUTH_SAML_SP_ENTITY_ID,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Exemple de configuració:
# 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"
}
Podeu generar un nou parell de claus utilitzant:
openssl req -newkey rsa:4096 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.key
La configuració predeterminada extreu els detalls de l’usuari dels atributs següents, configureu el vostre IdP per proporcionar-los:
Attribute |
SAML URI reference |
|---|---|
Nom complet |
|
First name |
|
Last name |
|
Adreça electrònica |
|
Nom d’usuari |
|
Quan configureu Weblate SP al vostre IdP, es recomana triar Format d’ID de nom persistent.
Suggeriment
Some identity providers (such as Microsoft Entra ID with multi-factor
authentication) require disabling the default requestedAuthnContext
in the SAML security configuration:
SOCIAL_AUTH_SAML_SECURITY_CONFIG = {"requestedAuthnContext": False}
In Docker, set WEBLATE_SAML_SECURITY_CONFIG instead.
Suggeriment
L’exemple anterior i la imatge de Docker defineixen un IdP anomenat weblate. És possible que hàgiu de configurar aquesta cadena com a Relay al vostre IdP.
Nota
L’autenticació de Weblate es basa en el paràmetre RelayState que s’ha de passar pel procés d’autenticació. Això s’ha de configurar amb alguns proveïdors d’identitat:
Vegeu també
Autenticació LDAP¶
L’autenticació LDAP es pot aconseguir millor utilitzant el paquet django-auth-ldap. Podeu instal·lar-lo mitjançant els mitjans habituals:
# Using PyPI
uv pip install 'django-auth-ldap>=1.3.0'
# Using apt-get
apt-get install python-django-auth-ldap
Suggeriment
Aquest paquet està inclòs al contenidor de Docker, vegeu Instal·lació mitjançant Docker.
Nota
Hi ha algunes incompatibilitats al mòdul Python LDAP 3.1.0, que poden impedir que utilitzeu aquesta versió. Si obteniu l’error AttributeError: l’objecte “mòdul” no té l’atribut “_trace_level”, la baixada de python-ldap a 3.0.0 pot ajudar.
Un cop hàgiu instal·lat el paquet, podeu connectar-lo a l’autenticació 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",
}
# 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
Hauríeu d’eliminar 'social_core.backends.email.EmailAuth' de la configuració AUTHENTICATION_BACKENDS, en cas contrari els usuaris podran establir la seva contrasenya a Weblate i autenticar-se utilitzant-la. Mantenir 'weblate.accounts.auth.WeblateUserBackend' encara és necessari per obtenir permisos i facilitar usuaris anònims. També us permetrà iniciar la sessió amb un compte d’administrador local, si l’heu creat (per exemple, utilitzant createadmin).
Utilitzant la contrasenya d’enllaç¶
Si no podeu utilitzar l’enllaç directe per a l’autenticació, haureu d’utilitzar la cerca i proporcionar un usuari per vincular-lo per a la cerca. Per exemple:
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)"
)
Active Directory integration¶
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
Vegeu també
Autenticació CAS¶
L’autenticació CAS es pot aconseguir mitjançant un paquet com Django CAS NG.
El primer pas és revelar el camp de correu electrònic de l’usuari mitjançant CAS. Això s’ha de configurar al propi servidor CAS i requereix que executeu almenys CAS v2, ja que CAS v1 no admet en absolut els atributs.
El segon pas és actualitzar Weblate per utilitzar el servidor CAS i els atributs.
Per instal·lar Django CAS NG:
uv pip install django-cas-ng
Un cop tingueu el paquet instal·lat, podeu connectar-lo al sistema d’autenticació de Django modificant el fitxer 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")
Finalment, es pot utilitzar un senyal per assignar el camp de correu electrònic a l’objecte d’usuari. Perquè això funcioni, heu d’importar el senyal del paquet django-cas-ng i connectar el vostre codi amb aquest senyal. Fer-ho al fitxer de configuració pot causar problemes, per tant, es recomana posar-ho:
Al mètode
django.apps.AppConfig.ready()de la configuració de l’aplicacióAl fitxer
urls.pydel projecte (quan no existeixen models)
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()
Configuració de l’autenticació de Django de tercers¶
En general, qualsevol connector d’autenticació de Django hauria de funcionar amb Weblate. Només cal que seguiu les instruccions del connector, només recordeu mantenir instal·lat el backend de l’usuari de Weblate.
Vegeu també
Normalment, la instal·lació consistirà en afegir un backend d’autenticació a AUTHENTICATION_BACKENDS i instal·lar una aplicació d’autenticació (si n’hi ha) a INSTALLED_APPS:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Autenticació de doble factor¶
Afegit a la versió 5.7.
Suggeriment
L’autenticació de dos factors afegeix una altra capa de seguretat al vostre compte ja que requereix més que una contrasenya per iniciar la sessió.
Weblate supports the following second factors:
- Claus de seguretat (WebAuthn)
Both, Passkeys and security keys are supported.
Les claus d’accés validen la vostra identitat mitjançant el tacte, el reconeixement facial, la contrasenya del dispositiu o un PIN, ja que inclouen la verificació d’usuari.
Les claus de seguretat són credencials de WebAuthn que només es poden utilitzar com a segon factor d’autenticació i només validen la presència de l’usuari.
- Aplicacions d’autenticació (TOTP)
Les aplicacions d’autenticació i les extensions del navegador com Aegis, Bitwarden, Google Authenticator, 1Password, Authy, Microsoft Authenticator, etc. generen contrasenyes d’un sol ús basades en el temps que s’utilitzen com a segon factor per verificar la vostra identitat quan se us demani durant l’inici de sessió.
- Codis de recuperació
Els codis de recuperació es poden utilitzar per accedir al vostre compte si perdeu l’accés al dispositiu i no podeu rebre codis d’autenticació de dos factors.
Mantingueu els vostres codis de recuperació tan segurs com la vostra contrasenya. Us recomanem que les deseu amb un gestor de contrasenyes com ara Bitwarden, 1Password, Authy o Keeper.
Cada usuari pot configurar-ho a Compte i caldrà que signi un segon factor a més del mètode d’autenticació existent.
Això es pot aplicar per als usuaris del projecte (vegeu Autenticació forçada de dos factors) o a nivell d’equip. En els desplegaments a tot el lloc, també es pot utilitzar per fer complir l’autenticació de dos factors per a tots els usuaris activant-la a l’equip predeterminat Usuaris, que s’assigna automàticament als nous usuaris mitjançant assignació automàtica d’equip.
Els permisos d’un equip amb una autenticació de dos factors forçada no s’aplicaran als usuaris que no la tinguin configurada.
Autenticació social¶
Gràcies a Welcome to Python Social Auth’s documentation!, Weblate admet l’autenticació mitjançant molts serveis de tercers com GitLab, Ubuntu, Fedora, etc.
Consulteu la seva documentació per obtenir instruccions genèriques de configuració a Django Framework.
Nota
Per defecte, Weblate es basa en serveis d’autenticació de tercers per proporcionar una adreça de correu electrònic validada. Si alguns dels serveis que voleu utilitzar no ho admeten, feu servir la validació del correu electrònic al costat de Weblate configurant FORCE_EMAIL_VALIDATION per a ells. Per exemple:
Vegeu també
Pipeline
Habilitar backends individuals és bastant fàcil, només es tracta d’afegir una entrada a la configuració
AUTHENTICATION_BACKENDSi possiblement d’afegir les claus necessàries per a un mètode d’autenticació determinat. Tingueu en compte que alguns backends no proporcionen correu electrònic de l’usuari de manera predeterminada, l’heu de sol·licitar de manera explícita, en cas contrari, Weblate no podrà acreditar correctament les contribucions que fan els usuaris.Suggeriment
La majoria dels backends d’autenticació requereixen HTTPS. Una vegada que HTTPS estigui habilitat al vostre servidor web, configureu Weblate per informar-ne correctament mitjançant
ENABLE_HTTPS, o perWEBLATE_ENABLE_HTTPSal contenidor de Docker.Vegeu també
Backend Python Social Auth
Autenticació OpenID¶
Per als serveis basats en OpenID, normalment només es tracta d’habilitar-los. La secció següent habilita l’autenticació OpenID per a OpenSUSE, Fedora i Ubuntu:
Vegeu també
OpenID
Autenticació GitHub¶
Heu de registrar una aplicació OAuth a GitHub i, a continuació, dir-li a Weblate tots els seus secrets:
El GitHub s’ha de configurar per tenir un URL de retorn de trucada com a
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_NAMEorSOCIAL_AUTH_GITHUB_TEAM_ID. Their callback URLs arehttps://WEBLATE SERVER/accounts/complete/github-org/andhttps://WEBLATE SERVER/accounts/complete/github-teams/.Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
GitHub
GitHub EE authentication¶
Heu de registrar una aplicació OAuth a GitHub EE i després dir-li a Weblate tots els seus secrets:
L’aplicació OAuth de GitHub s’ha de configurar per tenir un URL de retorn de trucada com a
https://WEBLATE SERVER/accounts/complete/github-enterprise/.En lloc de l’aplicació GitHub OAuth, també es pot utilitzar l’aplicació GitHub. Amb l’aplicació GitHub, es poden concedir permisos a nivell de repositoris, organització i/o usuari. Si decidiu utilitzar l’aplicació GitHub, heu d’habilitar el permís «Accés: només de lectura» per als usuaris - <Email addresses> i l’organització - <Members>.
Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
Backend classes
Autenticació Bitbucket¶
Heu de registrar una aplicació a Bitbucket i després dir-li a Weblate tots els seus secrets:
Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
Bitbucket
Google OAuth 2¶
Per utilitzar Google OAuth 2, heu de registrar una aplicació OAuth a <https://console.developers.google.com/>.
L’URL de redirecció és
https://WEBLATE SERVER/accounts/complete/google-oauth2/.Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
Google
Facebook OAuth 2¶
Com és habitual amb els serveis OAuth 2, heu de registrar la vostra aplicació a Facebook. Un cop fet això, podeu configurar Weblate per utilitzar-lo:
L’URL de redirecció és
https://WEBLATE SERVER/accounts/complete/facebook/.Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
Facebook
GitLab OAuth 2¶
Per utilitzar GitLab OAuth 2, heu de registrar una aplicació a <https://gitlab.com/profile/applications>.
L’URL de redirecció és
https://WEBLATE SERVER/accounts/complete/gitlab/i assegureu-vos de marcar l’àmbit read_user.Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
GitLab
Gitea OAuth 2¶
Per utilitzar Gitea OAuth 2, heu de registrar una aplicació a
https://GITEA SERVER/user/settings/applications.L’URL de redirecció és
https://WEBLATE SERVER/accounts/complete/gitea/.Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Nota
La configuració anterior també funciona amb Forgejo; per obtenir un exemple de desplegament de producció amb Forgejo, vegeu Codeberg Translate.
Vegeu també
Gitea
ID d’entrada de Microsoft¶
L’Azure Active Directory (Azure AD) és ara Microsoft Entra ID. Weblate manté els noms de backend
azuread-oauth2iazuread-tenant-oauth2per a la compatibilitat amb els backends subjacents de Python Social Auth i els desplegaments existents.Weblate es pot configurar per utilitzar inquilins comuns o específics per a l’autenticació.
L’URL de redirecció és
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/per a l’autenticació comuna ihttps://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/per a l’autenticació específica de l’inquilí.Necessitareu el següent:
L’identificador de l’aplicació (client) està disponible a la visió general del registre de l’aplicació al centre d’administració de Microsoft Entra. L’ID d’objecte no s’utilitza a Weblate.
L’identificador del directori (inquilí) és necessari per a l’autenticació de l’àmbit de l’inquilí, el que normalment es desitja.
El valor secret es mostra un cop creeu un secret de client per al registre de l’aplicació. La identificació secreta no s’utilitza a Weblate.
Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
Microsoft Azure Active Directory
Slack¶
Per utilitzar Slack OAuth 2, heu de registrar una aplicació a <https://api.slack.com/apps>.
L’URL de redirecció és
https://WEBLATE SERVER/accounts/complete/slack/.Nota
L’URL de retorn de trucada proporcionat per Weblate durant l’autenticació inclou el domini configurat. En cas que rebeu errors sobre la discrepància d’URL, potser voldreu solucionar-ho, consulteu Establiu el domini del lloc correcte.
Vegeu també
Slack
Anul·lació de noms i icones de mètodes d’autenticació¶
Podeu substituir el nom de visualització i la icona del mètode d’autenticació mitjançant la configuració com
SOCIAL_AUTH_<NAME>_IMAGEiSOCIAL_AUTH_<NAME>_TITLE. Per exemple, anul·lar el nom per a Auth0 seria així:S’està desactivant l’autenticació de contrasenya¶
L’autenticació de correu electrònic i contrasenya es pot desactivar eliminant
social_core.backends.email.EmailAuthdeAUTHENTICATION_BACKENDS. Mantingueu sempre allàweblate.accounts.auth.WeblateUserBackend, és necessari per a la funcionalitat bàsica de Weblate.Si desactiveu l’autenticació del correu electrònic, es desactivarà tota la funcionalitat relacionada amb el correu electrònic: invitació d’usuari o funció de restabliment de la contrasenya.
Truc
Encara podeu utilitzar l’autenticació de contrasenya per a la interfície d’administració, per als usuaris que hi creeu manualment. Només cal que aneu a
/admin/login/.Per exemple, l’autenticació utilitzant només el proveïdor d’openSUSE Open ID es pot aconseguir mitjançant el següent: