Legitimierung
Benutzerregistrierung
Die Standardeinstellung für Weblate ist die Verwendung von python-social-auth, einem Formular auf der Website zur Registrierung neuer Benutzer. Nach der Bestätigung ihrer E-Mail kann ein neuer Benutzer einen Beitrag leisten oder sich mit einem der Dienste von Drittanbietern authentifizieren.
Sie können die Registrierung neuer Benutzer auch mit REGISTRATION_OPEN
abschalten.
Die Authentifizierungsversuche unterliegen dem Rate limiting.
Authentifizierungs-Backends
Die eingebaute Lösung von Django wird für die Authentifizierung verwendet, einschließlich verschiedener sozialer Optionen, um dies zu tun. Wenn Sie sie verwenden, können Sie die Benutzerdatenbank anderer Django-basierter Projekte importieren (siehe Migrating from Pootle).
Django can additionally be set up to authenticate against other means too.
Siehe auch
Authentifizierungseinstellungen describes how to configure authentication in the official Docker image.
Passwort-Authentifizierung
The default settings.py
comes with a reasonable set of
AUTH_PASSWORD_VALIDATORS
:
Passwörter dürfen Ihren anderen persönlichen Daten nicht zu ähnlich sein.
Passwörter müssen mindestens 10 Zeichen enthalten.
Passwörter können kein häufig verwendetes Passwort sein.
Passwörter dürfen nicht ausschließlich aus Zahlen bestehen.
Passwörter dürfen nicht aus einem einzigen Zeichen oder nur aus Leerzeichen bestehen.
Passwörter dürfen nicht mit einem Passwort übereinstimmen, das Sie in der Vergangenheit verwendet haben.
Sie können diese Einstellung an Ihre Passwortrichtlinien anpassen.
Additionally you can also install django-zxcvbn-password which gives quite realistic estimates of password difficulty and allows rejecting passwords below a certain threshold.
SAML-Authentifizierung
Neu in Version 4.1.1.
Bitte folgen Sie den Anweisungen von Python Social Auth für die Konfiguration. Bedeutende Unterschiede:
Weblate supports single IDP which has to be called
weblate
inSOCIAL_AUTH_SAML_ENABLED_IDPS
.Die URL der SAML-XML-Metadaten lautet
/accounts/metadata/saml/
.Die folgenden Einstellungen werden automatisch ausgefüllt:
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Beispielkonfiguration:
# 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"
}
Die Standardkonfiguration extrahiert Benutzerdetails aus den folgenden Attributen; konfigurieren Sie Ihre IDP so, dass sie diese bereitstellt:
Attribut |
SAML-URI-Referenz |
---|---|
Vollständiger Name |
|
Vorname |
|
Nachname |
|
|
|
Benutzername |
|
Hinweis
The example above and the Docker image define an IDP called weblate
.
You might need to configure this string as Relay in your IDP.
Siehe auch
LDAP-Authentifizierung
Die LDAP-Authentifizierung lässt sich am besten mit dem Paket django-auth-ldap erreichen. Sie können es mit den üblichen Mitteln installieren:
# Using PyPI
pip install django-auth-ldap>=1.3.0
# Using apt-get
apt-get install python-django-auth-ldap
Hinweis
Dieses Paket ist im Docker-Container enthalten, siehe Installing using Docker.
Bemerkung
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.
Sobald Sie das Paket installiert haben, können Sie es mit der Django-Authentifizierung verbinden:
# 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
Bemerkung
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)"
)
Integration von 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
Siehe auch
CAS-Authentifizierung
Die CAS-Authentifizierung kann mit einem Paket wie django-cas-ng erreicht werden.
Schritt eins ist die Offenlegung des E-Mail-Feldes des Benutzers über CAS. Dies muss auf dem CAS-Server selbst konfiguriert werden und setzt voraus, dass Sie mindestens CAS v2 verwenden, da CAS v1 Attribute überhaupt nicht unterstützt.
Der zweite Schritt ist die Aktualisierung von Weblate zur Verwendung Ihres CAS-Servers und Ihrer Attribute.
Um django-cas-ng zu installieren:
pip install django-cas-ng
Sobald Sie das Paket installiert haben, können Sie es an das Django-Authentifizierungssystem anbinden, indem Sie die Datei settings.py
ändern:
# 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")
Finally, a signal can be used to map the e-mail field to the user object. For this to work you have to import the signal from the django-cas-ng package and connect your code with this signal. Doing this in settings file can cause problems, therefore it’s suggested to put it:
In your app config’s
django.apps.AppConfig.ready()
methodIn the project’s
urls.py
file (when no models exist)
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()
Siehe auch
Konfigurieren der Django-Authentifizierung von Drittanbietern
Generell sollte jedes Django-Authentifizierungs-Plugin mit Weblate funktionieren. Folgen Sie einfach den Anweisungen für das Plugin und denken Sie daran, das Weblate-Benutzer-Backend installiert zu lassen.
Siehe auch
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
)
Social authentication
Thanks to Welcome to Python Social Auth’s documentation!, Weblate support authentication using many third party services such as GitLab, Ubuntu, Fedora, etc.
Please check their documentation for generic configuration instructions in Django Framework.
Bemerkung
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:
Siehe auch
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.Hinweis
Die meisten der Authentifizierungs-Backends erfordern HTTPS. Sobald HTTPS in Ihrem Webserver aktiviert ist, konfigurieren Sie Weblate bitte mit
ENABLE_HTTPS
oder durchWEBLATE_ENABLE_HTTPS
im Docker-Container so, dass es korrekt gemeldet wird.Siehe auch
Python Social Auth Backend
OpenID-Authentifizierung
Für OpenID-basierte Dienste ist es normalerweise nur eine Frage der Aktivierung. Der folgende Abschnitt aktiviert die OpenID-Authentifizierung für OpenSUSE, Fedora und Ubuntu:
Siehe auch
OpenID
GitHub-Authentifizierung
Sie müssen eine OAuth-Anwendung auf GitHub registrieren und dann Weblate alle ihre Geheimnisse mitteilen:
GitHub sollte so konfiguriert sein, dass die Callback-URL
https://example.com/accounts/complete/github/
lautet.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/
.Bemerkung
Die von Weblate während der Authentifizierung bereitgestellte Callback-URL enthält die konfigurierte Domäne. Falls Sie Fehlermeldungen über eine nicht übereinstimmende URL erhalten, sollten Sie dies beheben, siehe Set correct site domain.
Siehe auch
GitHub
Bitbucket-Authentifizierung
Sie müssen eine Anwendung bei Bitbucket registrieren und dann Weblate alle ihre Geheimnisse mitteilen:
Bemerkung
Die von Weblate während der Authentifizierung bereitgestellte Callback-URL enthält die konfigurierte Domäne. Falls Sie Fehlermeldungen über eine nicht übereinstimmende URL erhalten, sollten Sie dies beheben, siehe Set correct site domain.
Siehe auch
Bitbucket
Google OAuth 2
Um Google OAuth 2 zu verwenden, müssen Sie eine Anwendung auf <https://console.developers.google.com/> registrieren und die Google+ API aktivieren.
Die Weiterleitungs-URL lautet
https://WEBLATE SERVER/accounts/complete/google-oauth2/
Bemerkung
Die von Weblate während der Authentifizierung bereitgestellte Callback-URL enthält die konfigurierte Domäne. Falls Sie Fehlermeldungen über eine nicht übereinstimmende URL erhalten, sollten Sie dies beheben, siehe Set correct site domain.
Siehe auch
Google
Facebook OAuth 2
Wie bei „OAuth 2“-Diensten üblich, müssen Sie Ihre Anwendung bei Facebook registrieren. Sobald dies geschehen ist, können Sie Weblate einrichten, um es zu nutzen:
Die Weiterleitungs-URL lautet
https://WEBLATE SERVER/accounts/complete/facebook/
Bemerkung
Die von Weblate während der Authentifizierung bereitgestellte Callback-URL enthält die konfigurierte Domäne. Falls Sie Fehlermeldungen über eine nicht übereinstimmende URL erhalten, sollten Sie dies beheben, siehe Set correct site domain.
Siehe auch
Facebook
GitLab OAuth 2
Um GitLab OAuth 2 zu verwenden, müssen Sie eine Anwendung auf <https://gitlab.com/profile/applications> registrieren.
Die Weiterleitungs-URL lautet
https://WEBLATE SERVER/accounts/complete/gitlab/
und stellen Sie sicher, dass Sie den Bereich read_user markieren.Bemerkung
Die von Weblate während der Authentifizierung bereitgestellte Callback-URL enthält die konfigurierte Domäne. Falls Sie Fehlermeldungen über eine nicht übereinstimmende URL erhalten, sollten Sie dies beheben, siehe Set correct site domain.
Siehe auch
GitLab
Microsoft Azure Active Directory
Weblate kann so konfiguriert werden, dass allgemeine oder spezifische Mandanten für die Authentifizierung verwendet werden.
Die Weiterleitungs-URL lautet
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/
für allgemeine undhttps://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/
für mandantenspezifische Authentifizierung.Bemerkung
Die von Weblate während der Authentifizierung bereitgestellte Callback-URL enthält die konfigurierte Domäne. Falls Sie Fehlermeldungen über eine nicht übereinstimmende URL erhalten, sollten Sie dies beheben, siehe Set correct site domain.
Siehe auch
Microsoft Azure Active Directory
Slack
Um Slack OAuth 2 zu nutzen, müssen Sie eine Anwendung auf <https://api.slack.com/apps> registrieren.
Die Weiterleitungs-URL lautet
https://WEBLATE SERVER/accounts/complete/slack/
.Bemerkung
Die von Weblate während der Authentifizierung bereitgestellte Callback-URL enthält die konfigurierte Domäne. Falls Sie Fehlermeldungen über eine nicht übereinstimmende URL erhalten, sollten Sie dies beheben, siehe Set correct site domain.
Siehe auch
Slack
Überschreiben von Namen und Symbolen für Authentifizierungsmethoden
Sie können den Anzeigenamen und das Symbol der Authentifizierungsmethode überschreiben, indem Sie die Einstellungen
SOCIAL_AUTH_<NAME>_IMAGE
undSOCIAL_AUTH_<NAME>_TITLE
verwenden. Zum Beispiel würde das Überschreiben der Benennung für Auth0 wie folgt aussehen:Passwort-Authentifizierung deaktivieren
E-Mail- und Passwort-Authentifizierung können ausgeschaltet werden, indem man
social_core.backends.email.EmailAuth
ausAUTHENTICATION_BACKENDS
entfernt. Behalten Sieweblate.accounts.auth.WeblateUserBackend
dort, es wird für die Kernfunktionalität von Weblate benötigt.Disabling e-mail authentication will disable all e-mail related functionality – user invitation or password reset feature.
Tipp
Sie können weiterhin die Passwortauthentifizierung für die Adminoberfläche verwenden, für Benutzer, die Sie dort manuell anlegen. Navigieren Sie einfach zu
/admin/login/
.Zum Beispiel kann die Authentifizierung nur mit dem openSUSE Open ID Provider wie folgt erreicht werden: