Authentification
Enregistrement utilisateur
La configuration par défaut est d’utiliser python-social-auth, un formulaire web pour gérer les inscriptions de nouveaux utilisateurs. Après confirmation de son e-mail, on peut contribuer et s’authentifier en utilisant des services tiers.
Vous pouvez aussi désactiver les inscriptions de nouveaux utilisateurs en utilisant REGISTRATION_OPEN
.
Le nombre de tentatives d’authentification est sujet à Limite de requêtes.
Backends d’authentification
La solution intégrée de Django est utilisée pour l’authentification, et inclue différents services sociaux pour le faire. Son utilisation signifie que vous pouvez importer la base de donnés d’utilisateurs d’autres projets basés sur Django (voir Migrating from Pootle).
De plus Django peut aussi être configuré pour utiliser d’autre méthodes d’authentification.
Voir aussi
Paramètres d’authentification décrit comment configurer l’authentification sur l’image Docker officielle.
S’authentifier par mot de passe
Le fichier par défaut settings.py
vient avec un ensemble raisonnable de AUTH_PASSWORD_VALIDATORS
:
Les mots de passent ne peuvent être similaires aux autres informations personnelles.
Les mots de passe doivent contenir au moins 10 caractères.
Les mots de passe ne peuvent être communément employés.
Les mots de passe ne peuvent être entièrement numériques.
Les mots de passe ne peuvent consister en un seul caractère ou que des espaces.
Les mots de passe ne peuvent contenir un mot de passe utilisé dans le passé.
Vous pouvez personnaliser ces paramètres pour les faire correspondre à votre politique de mots de passe.
De plus vous pouvez aussi installer django-zxcvbn-password qui donne une estimation plutôt réaliste de la complexité d’un mot de passe et permet de les rejeter en dessous d’un certain seuil.
S’authentifier avec SAML
Nouveau dans la version 4.1.1.
Merci de suivre les instructions d’authentification sociale spécifiques à python pour la configuration. Differences notable :
Weblate supporte single IDP qui doit être appelé
weblate
dansSOCIAL_AUTH_SAML_ENABLED_IDPS
.L’URL SAML de metadonnées XML est
/accounts/metadata/saml/
.Les paramètres suivants sont automatiquement remplis dans :
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Exemple de configuration :
# 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 |
---|---|
Nom complet |
|
Prénom |
|
Last name |
|
Adresse courriel |
|
Nom d’utilisateur |
|
Indication
The example above and the Docker image define an IDP labelled weblate
.
You might need to configure this string as Relay in your IDP.
Voir aussi
S’authentifier avec LDAP
C’est mieux de s’authentifier avec LDAP en utilisant le paquet django-auth-ldap. Vous pouvez l’installer comme d’habitude :
# Using PyPI
pip install django-auth-ldap>=1.3.0
# Using apt-get
apt-get install python-django-auth-ldap
Indication
This package is included in the Docker container, see Installing using Docker.
Note
Il y a quelques incompatibilités dans le module Python LDAP 3.1.0, qui peuvent vous empêcher d’utiliser cette version. Si vous obtenez l’erreur AttributeError: “module” object has no attribute “_trace_level”, rétrograder python-ldap en 3.0.0 pourrait aider.
Une fois que le paquet est installé, vous pouvez le relier à l’authentification 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
Note
Vous devriez supprimer 'social_core.backends.email.EmailAuth'
du paramètre AUTHENTICATION_BACKENDS
, sinon les utilisateurs seront en mesure de créer un mot de passe sur Weblate et de s’authentifier avec. Garder 'weblate.accounts.auth.WeblateUserBackend'
est encore nécessaire pour gérer les permissions et permettre l’utilisation anonyme. Cela permet aussi de s’identifier avec un compte admin local, si vous en avez créé un (p. ex. en utilisant createadmin
).
En utilisant le mot de passe bind
Si vous ne pouvez pas utiliser la liaison directe pour l’authentification, vous devrez utiliser la recherche, et fournir un utilisateur à lier pour la recherche. Par 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)"
)
Intégration avec 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
Voir aussi
S’authentifier avec CAS
On peut s’authentifier avec CAS en utilisant un paquet comme django-cas-ng.
La première étape est de révéler le champ e-mail de l’utilisateur via CAS. Cela doit être configuré sur le serveur de CAS, et demande d’utiliser au moins CAS v2 vu que CAS v1 ne supporte pas du tout les attributs.
L’étape suivante est de mettre à jour Weblate pour utiliser votre server CAS et les attributs.
Pour installer django-cas-ng :
pip install django-cas-ng
Une fois que le paquet est installé vous pouvez relier au système d’authentification Django en modifiant le fichier 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")
Au final, un signal peut être utiliser pour assigner le champ e-mail à l’objet utilisateur. Pour que cela fonctionne, vous devez importer le signal depuis le paquet django-cas-ng et connecter votre code à ce signal. Faire cette manipulation depuis les fichiers de configuration peut être problématique, alors on conseille de faire différemment :
Dans la méthode
django.apps.AppConfig.ready()
de la configuration de l’applicationDans le fichier
urls.py
du projet (quand il n’existe pas de modèle)
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()
Voir aussi
Configurer l’authentification Django avec des services tiers
Généralement n’importe quel module d’authentification Djano devrait fonctionner avec Weblate. Il suffit de suivre les instructions du module et de se rappeler de conserver le backend utilisateur de Weblate.
Voir aussi
Typiquement l’installation va consister à l’ajout d’un backend d’authentification à AUTHENTICATION_BACKENDS
et l’installation d’une app d’authentification (s’il y en une) dans INSTALLED_APPS
:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Authentification sociale
Grâce à Welcome to Python Social Auth’s documentation!, Weblate supporte l’authentification par différents services tiers comme GitLab, Ubuntu, Fedora, etc.
Merci de consulter leur documentation pour des instructions de configuration générique dans Django Framework.
Note
Par défaut, Weblate sur des services tiers d’authentification pour confirmer les adresses e-mail. Si certains services de votre choix ne le supportent pas, merci d’imposer la confirmation de l’email en configurant FORCE_EMAIL_VALIDATION. Par exemple :
Voir aussi
Pipeline
Activer d’autres backends est plutôt simple, il suffit d’ajouter une ligne à
AUTHENTICATION_BACKENDS
et les clefs nécessaires à une méthode d’authentification donnée. Notez que certains backends ne fournissent pas d’adresse e-mail utilisateur par défaut, vous devez la demander explicitement, sinon Weblate ne sera pas en mesure de créditer les contributions des utilisateurs comme il se doit.Indication
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.Voir aussi
Python Social Auth backend
Authentification OpenID
Pour les services reposant sur OpenID il n’y a généralement qu’à les activer. La section suivante activer l’authentification avec OpenID pour OpenSUSE, Fedora et Ubuntu :
Voir aussi
OpenID
S’authentifier avec GitHub
Vous devez créer une application OAuth sur Github et confier à Weblate tous ses petits secrets :
Le compte GitHub doit avoir une callback URL configurée tel que :
https://example.com/accounts/complete/github/
.Note
La callback URL fournie par Weblate pendant l’authentification inclue le domaine configuré. En cas d’erreurs sur l’URL, vous devriez pouvoir arranger cela. Voir Set correct site domain.
Voir aussi
GitHub
S’authentifier avec Bitbucket
Vous devez créer une application sur Bitbucket et confier à Weblate tous ses petits secrets :
Note
La callback URL fournie par Weblate pendant l’authentification inclue le domaine configuré. En cas d’erreurs sur l’URL, vous devriez pouvoir arranger cela. Voir Set correct site domain.
Voir aussi
Bitbucket
Google OAuth 2
Pour utiliser Google OAuth 2, vous devez enregistrer une application sur <https://console.developers.google.com/> et activer l’API Google+.
L’URL de redirection est
https://WEBLATE SERVER/accounts/complete/google-oauth2/
Note
La callback URL fournie par Weblate pendant l’authentification inclue le domaine configuré. En cas d’erreurs sur l’URL, vous devriez pouvoir arranger cela. Voir Set correct site domain.
Voir aussi
Google
Facebook OAuth 2
Comme d’habitude avec les services OAuth 2, vous devez enregistrer une application chez Facebook. Une fois que c’est fait, vous pouvez configurer Weblate pour l’utiliser :
L’URL de redirection est
https://WEBLATE SERVER/accounts/complete/facebook/
Note
La callback URL fournie par Weblate pendant l’authentification inclue le domaine configuré. En cas d’erreurs sur l’URL, vous devriez pouvoir arranger cela. Voir Set correct site domain.
Voir aussi
Facebook
GitLab OAuth 2
Pour utiliser GitLab OAuth 2, vous devez enregistrer une application sur <https://gitlab.com/profile/applications>.
L’URL de redirection est
https://WEBLATE SERVER/accounts/complete/gitlab/
and ensure you mark the read_user scope.Note
La callback URL fournie par Weblate pendant l’authentification inclue le domaine configuré. En cas d’erreurs sur l’URL, vous devriez pouvoir arranger cela. Voir Set correct site domain.
Voir aussi
GitLab
Active Directory Microsoft Azure
Weblate peut être configuré pour utiliser des tenants communs ou spécifiques à l’authentification.
L’URL de redirection est
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/
pour les communs ethttps://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/
pour les tenants spécifiques à l’authentification.Note
La callback URL fournie par Weblate pendant l’authentification inclue le domaine configuré. En cas d’erreurs sur l’URL, vous devriez pouvoir arranger cela. Voir Set correct site domain.
Voir aussi
Microsoft Azure Active Directory
Slack
Pour utiliser OAuth 2 avec Slack, vous devez enregistrer une application sur <https://api.slack.com/apps>.
L’URL de redirection est
https://WEBLATE SERVER/accounts/complete/slack/
.Note
La callback URL fournie par Weblate pendant l’authentification inclue le domaine configuré. En cas d’erreurs sur l’URL, vous devriez pouvoir arranger cela. Voir Set correct site domain.
Voir aussi
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:Désactiver l’authentification par mot de passe
L’authentification par e-mail et mot de passe peut être désactivée en supprimant
social_core.backends.email.EmailAuth
deAUTHENTICATION_BACKENDS
. Conservez toujoursweblate.accounts.auth.WeblateUserBackend
là, c’est nécessaire pour les fonctionnalités essentielles de Weblate.Astuce
Vous pouvez toujours utiliser l’authentification par e-mail et mot de passe sur l’interface d’admin pour créer des utilisateurs manuellement depuis
/admin/
.Par example, l’authentification utilisant seulement openSUSE OpenID peut être réalisée comme suit :