Authenticatie¶
Gebruikersregistratie¶
De standaard instelling voor Weblate is om python-social-auth te gebruiken, een formulier op de website om registratie van nieuwe gebruikers af te handelen. Na het bevestigen van uw e-mail kan een nieuwe gebruiker deelnemen of authenticeren door een van de services voor derde partijen te gebruiken.
U kunt registreren van nieuwe gebruikers uitschakelen met REGISTRATION_OPEN
.
De pogingen voor authenticatie zijn onderworpen aan een Opvraaglimiet gebruiken.
Authenticatie backends¶
De ingebouwde oplossing van Django wordt gebruikt voor authenticatie, inclusief verscheidene sociale opties om dat te doen. Gebruiken ervan betekent dat u de gebruikersdatabase van andere, op Django gebaseerde projecten, kunt importeren (bekijk Migreren vanuit Pootle).
Django kan aanvullend worden ingesteld om ook met andere middelen te authenticeren.
Zie ook
Instellingen voor authenticatie beschrijft hoe authenticatie te configureren in de officiële Docker-image.
Wachtwoord authenticatie¶
Het standaard bestand settings.py
bevat een redelijke set AUTH_PASSWORD_VALIDATORS
dat ervoor zorgt dat zwakke wachtwoorden niet zijn toegestaan. U kunt deze instelling aanpassen aan uw beleid voor wachtwoorden.
Aanvullend kunt u ook django-zxcvbn-password-validator installeren, dat behoorlijk realistische benaderingen van de moeilijkheid van wachtwoorden geeft en het mogelijk maakt wachtwoorden onder een bepaalde drempel te weigeren.
SAML authenticatie¶
Added in version 4.1.1.
Volg de instructies voor Python Social Auth om te configureren. Opvallende verschillen:
Weblate ondersteunt enkele IDP die
weblate``moet worden genoemd in ``SOCIAL_AUTH_SAML_ENABLED_IDPS
.De SAML XML URL voor metadata is
/accounts/metadata/saml/
.De volgende instellingen worden automatisch ingevuld in:
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Voorbeeld configuratie:
# 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"
}
De standaard configuratie neemt details voor de gebruikers uit de volgende attributen, configureer uw IDP om ze te verschaffen:
Attribuut |
SAML URI-verwijzing |
---|---|
Volledige naam |
|
Voornaam |
|
Achternaam |
|
E-mailadres |
|
Gebruikersnaam |
|
Hint
Het voorbeeld hierboven en de Docker image definiëren een IDP genaamd weblate
. U zou misschien deze tekenreeks als Relay in uw IDP moeten configureren.
Zie ook
LDAP authenticatie¶
Authenticatie voor LDAP kan het beste worden verkregen met het pakket django-auth-ldap. U kunt het op de gebruikelijke manier installeren:
# Using PyPI
uv pip install 'django-auth-ldap>=1.3.0'
# Using apt-get
apt-get install python-django-auth-ldap
Hint
Dit pakket is opgenomen in de container van Docker, bekijk Installeren met Docker.
Notitie
Er zijn enige incompatibiliteiten in de Python LDAP 3.1.0 module, die u kunnen verhinderen die versie te gebruiken. Als u de fout AttributeError: ‘module’ object has no attribute ‘_trace_level’ krijgt, zou downgraden van python-ldap naar 3.0.0 kunnen helpen.
Als het pakket eenmaal is geïnstalleerd, kunt u het verbinden met de authenticatie van 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
Notitie
U zou 'social_core.backends.email.EmailAuth'
moeten verwijderen uit de instelling AUTHENTICATION_BACKENDS
, anders zullen gebruikers in staat zijn hun wachtwoord in te stellen in Weblate, en daarmee authenticeren. Behouden van 'weblate.accounts.auth.WeblateUserBackend'
is nog steeds nodig om rechten aan te maken en anonieme gebruikers te faciliteren. Het zal u ook toestaan in te loggen met een lokaal beheersaccount, als u dat gemaakt heeft (bijv. door createadmin
te gebruiken).
Gebonden wachtwoord gebruiken¶
Als u niet direct kunt binden aan authenticatie, zult u zoeken moeten gebruiken en voor de zoekactie een gebruiker moeten verschaffen om aan te binden. Bijvoorbeeld:
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-integratie¶
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
CAS authenticatie¶
Authenticatie voor CAS kan worden verkregen met een pakket zoals django-cas-ng.
Stap een is het ontsluiten van het veld e-mail van de gebruiker via CAS. Dat moet worden geconfigureerd op de server van CAS zelf, en vereist dat u ten minste CAS v2 uitvoert, omdat CAS v1 in het geheel geen attributen ondersteunt.
Stap twee is het bijwerken van Weblate om uw server van CAS en attributen te gebruiken.
Installeren van django-cas-ng:
uv pip install django-cas-ng
Als u het pakket eenmaal hebt geïnstalleerd kunt u het verbinden met het systeem voor authenticatie van Django door het bestand settings.py
aan te passen:
# 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")
Tenslotte kan een signaal worden gebruikt om het veld e-mail field te verbinden aan het object gebruiker. U moet, om dit te laten werken, het signaal importeren vanuit het pakket django-cas-ng en uw code met dit signaal verbinden. Dit in het bestand met instellingen doen kan problemen veroorzaken, daarom wordt voorgesteld het te plaatsen:
In de methode van uw app’s configuratie
django.apps.AppConfig.ready()
In het bestand van het project
urls.py
(als er geen modellen bestaan)
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()
Zie ook
Configureren van derde partij authenticatie voor Django¶
Over het algemeen zou elke plug-in voor authenticatie van Django moeten werken met Weblate. Volg eenvoudigweg de instructies voor de plug-in, onthoud echter wel om de gebruiker backend van Weblate geïnstalleerd te laten.
Zie ook
Gewoonlijk zal de installatie bestaan uit het toevoegen van een backend voor authenticatie aan AUTHENTICATION_BACKENDS
en het installeren van een app voor authenticatie (als er een is) in INSTALLED_APPS
:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Twee-factor authenticatie¶
Added in version 5.7.
Hint
Twee-factor authenticatie voegt nog een beveiligingslaag toe aan uw account door net iets meer te vragen dan alleen een wachtwoord om in te loggen.
Weblate ondersteunt de volgende twee-factors:
- Beveiligingssleutels (WebAuthn)
Zowel wachtwoorden als beveiligingssleutels worden ondersteund.
Gegevens voor valideren van uw identiteit gebruiken aanraken, gezichtsherkenning, een wachtwoord voor een apparaat, of een PIN als zij verificatie van de gebruiker bevatten.
Beveiligingssleutels zijn WebAuthn inloggegevens die alleen kunnen worden gebruikt als tweede factor voor authenticatie, en zij valideren alleen de aanwezigheid van de gebruiker.
- Apps voor authenticatie (TOTP)
Apps voor authenticatie en browseruitbreidingen, zoals Aegis, Bitwarden, Google Authenticator, 1Password, Authy, Microsoft Authenticator, etc., genereren op tijd gebaseerde eenmalige wachtwoorden die als tweede factor worden gebruikt om uw identiteit te verifiëren als daar bij het inloggen naar wordt gevraagd.
- Herstelcodes
Herstelcodes kunnen worden gebruikt voor toegang tot uw account, als u geen toegang krijgt via uw apparaat en geen authenticatiecodes voor twee-factor kunt ontvangen.
Bewaar uw herstelcodes net zo veilig als uw wachtwoord. We raden aan om ze op te slaan met een wachtwoordbeheerder, zoals Bitwarden, 1Password, Authy of Keeper.
Elke gebruiker kan dit configureren in Account en tweede factor zal zijn vereist om in te loggen, aanvullend aan de bestaande methode voor authenticatie.
Dit kan worden afgedwongen voor gebruikers aan het project (bekijk Twee-factor authenticatie afgedwongen) of op teamniveau.
De rechten van een team met afgedwongen twee-factor authenticatie zullen niet worden toegepast voor gebruikers die het niet hebben geconfigureerd.
Sociale authenticatie¶
Dankzij Welcome to Python Social Auth’s documentation! ondersteunt Weblate authenticatie met veel services van derde partijen, zoals GitLab, Ubuntu, Fedora, etc.
Bekijk hun documentatie voor algemene instructies voor configuratie in Django Framework.
Notitie
Standaard vertrouwt Weblate op services voor authenticatie van derde partijen om een gevalideerd e-mailadres te verschaffen. Als enkele van de services die u wilt gebruiken dit niet ondersteunen, forceer dan valideren van e-mail aan de kant van Weblate daarvoor FORCE_EMAIL_VALIDATION te configureren. Bijvoorbeeld:
Zie ook
Pipeline
Inschakelen van individuele backends is nogal gemakkelijk, het is slechts een kwestie van het toevoegen van een item aan de instelling
AUTHENTICATION_BACKENDS
en mogelijk het toevoegen van sleutels die nodig zijn voor een bepaalde methode van authenticatie. Onthoud dat sommige backends niet standaard e-mail van de gebruiker verschaffen, u zou het expliciet moeten verzoeken, anders zal Weblate niet in staat zijn om op de juiste wijze de bijdragen van gebruikers te attribueren.Hint
De meeste backends voor authenticatie vereisen HTTPS. Als HTTPS eenmaal is ingeschakeld in uw webserver, configureer Weblate om het juist te rapporteren met
ENABLE_HTTPS
, of doorWEBLATE_ENABLE_HTTPS
in de container van Docker.Zie ook
Python Social Auth backend
OpenID authenticatie¶
Voor op OpenID gebaseerde services is het gewoonlijk slechts een kwestie van het inschakelen ervan. Het volgende gedeelte schakelt authenticatie met OpenID in voor openSUSE, Fedora en Ubuntu:
Zie ook
OpenID
GitHub authenticatie¶
U dient een toepassing voor OAuth te registreren in GitHub en dan Weblate alle geheimen te geven:
GitHub zou moeten worden geconfigureerd om een URL voor terugkoppeling te hebben, zoals
https://WEBLATE SERVER/accounts/complete/github/
.Er zijn soortgelijke backends bekend voor GitHub for Organizations en GitHub for Teams. Hun instellingen zijn genaamd
SOCIAL_AUTH_GITHUB_ORG_*
enSOCIAL_AUTH_GITHUB_TEAM_*
, en zij vereisen aanvullende instellingen voor het bereik -SOCIAL_AUTH_GITHUB_ORG_NAME
orSOCIAL_AUTH_GITHUB_TEAM_ID
. Hun URL’s voor terugkoppeling zijnhttps://WEBLATE SERVER/accounts/complete/github-org/
enhttps://WEBLATE SERVER/accounts/complete/github-teams/
.Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
GitHub
GitHub EE authenticatie¶
U moet een OAuth App registreren in GitHub EE en dan Weblate alle geheimen te vertellen:
De GitHub OAuth App zou moeten worden geconfigureerd om een URL voor terugkoppeling te hebben zoals
https://WEBLATE SERVER/accounts/complete/github-enterprise/
.In plaats van GitHub OAuth App, kan ook GitHub App worden gebruikt. Met GitHub App kunnen rechten worden toegewezen aan opslagruimten, organisatie en/of niveau van gebruiker. Als u besluit om GitHub App te gebruiken, moet u het recht Access: Read-only inschakelen voor Gebruikers - <E-mailadressen> en Organisatie - <Leden>.
Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
GitHub Enterprise
Bitbucket authenticatie¶
U moet een toepassing registreren in Bitbucket en dan Weblate alle geheimen vertellen:
Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
Bitbucket
Google OAuth 2¶
U moet, om Google OAuth 2 te gebruiken, een toepassing registreren bij <https://console.developers.google.com/> en de Google+ API inschakelen.
De URL voor de verwijzing is
https://WEBLATE SERVER/accounts/complete/google-oauth2/
.Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
Google
Facebook OAuth 2¶
Zoals gewoonlijk met services van OAuth 2 moet u uw toepassing registreren bij Facebook. Als dat eenmaal is gedaan, kunt u Weblate instellen om het te gebruiken:
De URL voor de verwijzing is
https://WEBLATE SERVER/accounts/complete/facebook/
.Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
Facebook
GitLab OAuth 2¶
Voor het gebruiken van GitLab OAuth 2 moet u een toepassing registreren bij <https://gitlab.com/profile/applications>.
De URL voor de verwijzing is
https://WEBLATE SERVER/accounts/complete/gitlab/
en zorg ervoor dat u het bereik read_user selecteert.Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
GitLab
Gitea OAuth 2¶
Voor het gebruiken van Gitea OAuth 2 moet u een toepassing registreren bij
https://GITEA SERVER/user/settings/applications
.De URL voor de verwijzing is
https://WEBLATE SERVER/accounts/complete/gitea/
.Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Notitie
Bovenstaande configuratie werkt ook met Forgejo; voor een voorbeeld voor productie uitrollen met Forgejo, bekijk Codeberg Translate.
Zie ook
Gitea
Microsoft Azure Active Directory¶
Weblate kan worden geconfigureerd om veel voorkomende of specifieke huurders voor authenticatie te gebruiken.
De URL voor de verwijzing is
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/
voor veel voorkomende enhttps://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/
voor huurder-specifieke authenticatie.U heeft het volgende nodig:
Toepassing (client) ID kan worden verkregen vanaf de pagina van de toepassing. Object ID wordt in Weblate niet gebruikt.
Map (huurder) ID is nodig voor authenticatie in het bereik van huurders, wat gewoonlijk gewenst is.
Geheime waarde wordt weergegeven als u eenmaal een geheim genereert voor een toepassing. Geheim ID wordt in Weblate niet gebruikt.
Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
Microsoft Azure Active Directory
Slack¶
Voor het gebruiken van Slack OAuth 2 moet u een toepassing registreren bij <https://api.slack.com/apps>.
De URL voor de verwijzing is
https://WEBLATE SERVER/accounts/complete/slack/
.Notitie
De door Weblate verschafte URL, voor terugkoppeling gedurende de authenticatie, bevat het geconfigureerde domein. Voor het geval u fouten krijgt met betrekking tot een niet overeenkomende URL, zou u dit misschien willen repareren, bekijk Correcte domein site instellen.
Zie ook
Slack
Overschrijven namen van methoden voor authenticatie en pictogrammen¶
U kunt de weergavenaam van de methode voor authenticatie en het pictogram overschrijven met instellingen zoals
SOCIAL_AUTH_<NAME>_IMAGE
enSOCIAL_AUTH_<NAME>_TITLE
. Overschrijven van de naam voor Auth0 zou er uitzien als:Authenticatie met wachtwoord uitschakelen¶
Authenticatie met e-mail en wachtwoord kan worden uitgeschakeld door
social_core.backends.email.EmailAuth
te verwijderen vanuitAUTHENTICATION_BACKENDS
. Behoud daar altijdweblate.accounts.auth.WeblateUserBackend
, het is nodig voor de functionaliteit van de bron voor Weblate.Uitschakelen van e-mailauthenticatie zal alle aan e-mail gerelateerde functionaliteit uitschakelen – uitnodigen van gebruikers of de mogelijkheid voor herstellen van het wachtwoord.
Tip
U kunt nog steeds authenticatie met wachtwoord gebruiken voor de beheerinterface, voor gebruikers maakt u ze daar handmatig. Navigeer gewoon naar
/admin/login/
.Bijvoorbeeld authenticatie met alleen de provider voor openSUSE Open ID kan worden bereikt met het volgende: