Autentificare¶
Înregistrare utilizator¶
Configurația implicită pentru Weblate este de a utiliza python-social-auth, un formular pe site-ul web pentru a gestiona înregistrarea noilor utilizatori. După confirmarea e-mail-ului, un nou utilizator poate contribui sau se poate autentifica prin utilizarea unuia dintre serviciile terților.
De asemenea, puteți dezactiva înregistrarea noilor utilizatori folosind REGISTRATION_OPEN
.
Încercările de autentificare sunt supuse Rate limiting.
Backend-uri de autentificare¶
Pentru autentificare se folosește soluția integrată în Django, care include diverse opțiuni sociale. Folosirea acesteia înseamnă că puteți importa baza de date de utilizatori din alte proiecte bazate pe Django (see Migrating from Pootle).
În plus, Django poate fi configurat pentru a se autentifica și prin alte mijloace.
Vezi și
Authentication settings descrie modul de configurare a autentificării în imaginea oficială Docker.
Autentificarea prin parolă¶
Fișierul implicit settings.py
vine cu un set rezonabil de AUTH_PASSWORD_VALIDATORS
:
Parolele nu pot fi prea asemănătoare cu alte informații personale.
Parolele trebuie să conțină cel puțin 10 caractere.
Parolele nu pot fi o parolă folosită în mod obișnuit.
Parolele nu pot fi în întregime numerice.
Parolele nu pot fi formate dintr-un singur caracter sau numai din spații albe.
Parolele nu se pot potrivi cu o parolă pe care ați folosit-o în trecut.
Puteți personaliza această setare pentru a se potrivi cu politica dumneavoastră privind parolele.
În plus, puteți instala și django-zxcvbn-password care oferă estimări destul de realiste ale dificultății parolelor și permite respingerea parolelor sub un anumit prag.
Autentificare SAML¶
Nou în versiunea 4.1.1.
Vă rugăm să urmați instrucțiunile Python Social Auth pentru configurare. Diferențe notabile:
Weblate acceptă un singur IDP care trebuie să fie numit
weblate
înSOCIAL_AUTH_SAML_ENABLED_IDPS`
.URL-ul metadatelor SAML XML este
/accounts/metadata/saml/
.Următoarele setări sunt completate automat:
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Exemplu de configurare:
# 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"
}
The default configuration extracts user details from following attributes, configure your IDP to provide them:
Attribute |
SAML URI reference |
---|---|
Nume și prenume |
|
First name |
|
Last name |
|
|
|
Nume utilizator |
|
Sugestie
The example above and the Docker image define an IDP labelled weblate
.
You might need to configure this string as Relay in your IDP.
Vezi și
Autentificare LDAP¶
Autentificarea LDAP poate fi realizată cel mai bine folosind pachetul django-auth-ldap. Îl puteți instala prin mijloace obișnuite:
# Using PyPI
pip install django-auth-ldap>=1.3.0
# Using apt-get
apt-get install python-django-auth-ldap
Sugestie
This package is included in the Docker container, see Installing using Docker.
Notă
Există unele incompatibilități în modulul Python LDAP 3.1.0, care vă pot împiedica să utilizați această versiune. Dacă primiți eroarea AttributeError: «module» object has no attribute «_trace_level», ar putea fi de ajutor dacă faceți downgrade la python-ldap 3.0.0.
După ce ați instalat pachetul, îl puteți conecta la autentificarea 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
Notă
Ar trebui să eliminați 'social_core.backends.email.EmailAuth'
din setarea AUTHENTICATION_BACKENDS
, altfel utilizatorii își vor putea seta parola în Weblate și se vor putea autentifica folosind-o. Păstrarea 'weblate.accounts.auth.WeblateUserBackend'
este încă necesară pentru a face permisiuni și a facilita utilizatorii anonimi. De asemenea, vă va permite să vă autentificați folosind un cont de administrator local, dacă l-ați creat (e.g. by using createadmin
).
Utilizarea parolei bind¶
Dacă nu puteți utiliza direct bind pentru autentificare, va trebui să utilizați căutarea și să furnizați un utilizator care să se lege pentru căutare. De exemplu:
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
Autentificare CAS¶
Autentificarea CAS poate fi realizată cu ajutorul unui pachet precum django-cas-ng.
Primul pas constă în dezvăluirea câmpului de e-mail al utilizatorului prin intermediul CAS. Acest lucru trebuie configurat chiar pe serverul CAS și necesită să rulați cel puțin CAS v2, deoarece CAS v1 nu acceptă deloc atribute.
Al doilea pas este actualizarea Weblate pentru a utiliza serverul CAS și atributele.
Pentru a instala django-cas-ng:
pip install django-cas-ng
După ce ați instalat pachetul, îl puteți conecta la sistemul de autentificare Django modificând fișierul 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")
În cele din urmă, se poate utiliza un semnal pentru a corela câmpul de e-mail cu obiectul utilizator. Pentru ca acest lucru să funcționeze, trebuie să importați semnalul din pachetul django-cas-ng și să vă conectați codul cu acest semnal. Făcând acest lucru în fișierul de setări poate cauza probleme, de aceea este sugerat să îl puneți:
În metoda
django.apps.AppConfig.ready()
din configurația aplicației dvsÎn fișierul
urls.py
al proiectului (atunci când nu există modele)
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()
Vezi și
Configurarea autentificării Django de la o terță parte¶
În general, orice plugin de autentificare Django ar trebui să funcționeze cu Weblate. Trebuie doar să urmați instrucțiunile pentru plugin, dar nu uitați să păstrați instalat backend-ul de utilizator Weblate.
Vezi și
De obicei, instalarea va consta în adăugarea unui backend de autentificare la AUTHENTICATION_BACKENDS
și instalarea unei aplicații de autentificare (dacă există) în INSTALLED_APPS
:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Autentificare socială¶
Datorită Welcome to Python Social Auth’s documentation!, Weblate suportă autentificarea cu ajutorul multor servicii terțe, cum ar fi GitLab, Ubuntu, Fedora, etc.
Vă rugăm să consultați documentația lor pentru instrucțiuni de configurare generică în Django Framework.
Notă
În mod implicit, Weblate se bazează pe serviciile de autentificare ale unor terțe părți pentru a furniza o adresă de e-mail validată. Dacă unele dintre serviciile pe care doriți să le utilizați nu acceptă acest lucru, vă rugăm să impuneți validarea e-mailului pe partea Weblate prin configurarea FORCE_EMAIL_VALIDATION pentru acestea. De exemplu:
Vezi și
Pipeline
Activarea backend-urilor individuale este destul de ușoară, este doar o chestiune de adăugare a unei intrări la
AUTHENTICATION_BACKENDS
și, eventual, adăugarea cheilor necesare pentru o anumită metodă de autentificare. Vă rugăm să rețineți că unele backend-uri nu furnizează în mod implicit e-mailul utilizatorului, trebuie să îl solicitați în mod explicit, altfel Weblate nu va putea să crediteze în mod corespunzător contribuțiile pe care le fac utilizatorii.Sugestie
Most of the authentication backends require HTTPS. Once HTTPS is enabled in your web server please configure Weblate to report it properly using
ENABLE_HTTPS
, or byWEBLATE_ENABLE_HTTPS
in the Docker container.Vezi și
Python Social Auth backend
Autentificare OpenID¶
În cazul serviciilor bazate pe OpenID, de obicei este vorba doar de activarea acestora. Următoarea secțiune permite autentificarea OpenID pentru OpenSUSE, Fedora și Ubuntu:
Vezi și
OpenID
Autentificarea GitHub¶
Trebuie să înregistrați o aplicație OAuth pe GitHub și apoi să-i spuneți lui Weblate toate secretele sale:
GitHub ar trebui să fie configurat pentru a avea un URL de callback ca
https://example.com/accounts/complete/github/
.Notă
URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Set correct site domain.
Vezi și
GitHub
Autentificarea Bitbucket¶
Trebuie să înregistrați o aplicație pe Bitbucket și apoi să-i spuneți lui Weblate toate secretele sale:
Notă
URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Set correct site domain.
Vezi și
Bitbucket
Google OAuth 2¶
Pentru a utiliza Google OAuth 2, trebuie să înregistrați o aplicație pe <https://console.developers.google.com/> și să activați API-ul Google+.
URL-ul de redirecționare este
https://WEBLATE SERVER/accounts/complete/google-oauth2/
Notă
URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Set correct site domain.
Vezi și
Google
Facebook OAuth 2¶
Ca de obicei în cazul serviciilor OAuth 2, trebuie să vă înregistrați aplicația cu Facebook. După ce ați făcut acest lucru, puteți configura Weblate pentru a o utiliza:
URL-ul de redirecționare este
https://WEBLATE SERVER/accounts/complete/facebook/
Notă
URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Set correct site domain.
Vezi și
Facebook
GitLab OAuth 2¶
Pentru a utiliza GitLab OAuth 2, trebuie să înregistrați o aplicație pe <https://gitlab.com/profile/applications>.
URL-ul de redirecționare este
https://WEBLATE SERVER/accounts/complete/gitlab/
și asigurați-vă că ați marcat domeniul read_user.Notă
URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Set correct site domain.
Vezi și
GitLab
Microsoft Azure directoare active¶
Weblate poate fi configurat pentru a utiliza chiriași comuni sau specifici pentru autentificare.
URL-ul de redirecționare este
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/
pentru autentificarea comună șihttps://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/
pentru autentificarea specifică chiriașilor.Notă
URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Set correct site domain.
Vezi și
Microsoft Azure Active Directory
Slack¶
Pentru a utiliza Slack OAuth 2, trebuie să înregistrați o aplicație pe <https://api.slack.com/apps>.
URL-ul de redirecționare este
https://WEBLATE SERVER/accounts/complete/slack/
.Notă
URL-ul de callback furnizat de Weblate în timpul autentificării include domeniul configurat. În cazul în care primiți erori privind neconcordanța URL-ului, poate doriți să remediați acest lucru, consultați Set correct site domain.
Vezi și
Slack
Overriding authentication method names and icons¶
You can override the authentication method display name and icon using using settings as
SOCIAL_AUTH_<NAME>_IMAGE
andSOCIAL_AUTH_<NAME>_TITLE
. For example overriding naming for Auth0 would look like:Dezactivarea autentificării prin parolă¶
Autentificarea prin e-mail și parolă poate fi dezactivată prin eliminarea
social_core.backends.email.EmailAuth
dinAUTHENTICATION_BACKENDS
. Păstrați întotdeaunaweblate.accounts.auth.WeblateUserBackend
acolo, este necesar pentru funcționalitatea de bază a Weblate.Sfat
Puteți utiliza în continuare autentificarea prin parolă pentru interfața de administrare, pentru utilizatorii pe care îi creați manual acolo. Trebuie doar să navigați la
/admin/
.De exemplu, autentificarea folosind doar furnizorul openSUSE Open ID poate fi realizată folosind următoarele: