Розпізнавання¶
Реєстрація користувача¶
За типових налаштувань Weblate використовує python-social-auth, форму на сайті для обробки реєстрації нових користувачів. Після підтвердження адреси електронної пошти новий користувач може робити внески або проходити розпізнавання за допомогою однієї зі сторонніх служб.
Ви також можете вимкнути реєстрацію нових користувачів за допомогою параметра REGISTRATION_OPEN
.
Спроби розпізнавання описано у Обмеження частоти.
Модулі розпізнавання¶
Для розпізнавання використовується вбудоване рішення Django, у якому передбачено різноманітні варіанти розпізнавань для соціальних мереж. Використання цього рішення означає, що чи можете імпортувати базу даних користувачів інших заснованих на Django проєктів (див. Перенесення даних з Pootle).
Django можна додатково налаштувань для розпізнавання в інших системах розпізнавання.
Дивись також
У розділі Параметри розпізнавання описано, як налаштувати розпізнавання у офіційному образі Docker.
Розпізнавання за паролем¶
Типовий settings.py
постачається із достатнім набором AUTH_PASSWORD_VALIDATORS
:
Паролі не можуть бути надто подібними до інших ваших особистих даних.
Паролі мають складатися із принаймні 10 символів.
Пароль не може бути паролем загального вжитку.
Пароль не може складатися лише з цифр.
Паролі не можуть складатися лише з одного символу або лише з пробілів.
Паролі не можуть збігатися із паролями, які ви використовували раніше.
Ви можете налаштувати цей параметр так, щоб він відповідав вашим правилам щодо паролів.
Крім того, ви можете встановити django-zxcvbn-password — додаток, який дає доволі реалістичну оцінку складності пароля та надає змогу відмовляти у реєстрації паролів, які не є достатньо складними.
Дивись також
Розпізнавання за SAML¶
Added in version 4.1.1.
Будь ласка, виконайте настанови щодо налаштовування розпізнавання за соціальними мережами у Python. Відмінності:
У Weblate передбачено підтримку єдиного IDP, який має назву
weblate
, уSOCIAL_AUTH_SAML_ENABLED_IDPS
.Адреса метаданих XML SAML —
/accounts/metadata/saml/
.Автоматично заповнено буде такі параметри:
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Приклад налаштувань:
# 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"
}
За типових налаштувань параметри запису користувача видобувають із вказаних нижче атрибутів. Налаштуйте ваш IDP на надання таких параметрів:
Атрибут |
Довідник щодо адрес SAML |
---|---|
Повне ім’я |
|
Ім’я |
|
Прізвище |
|
Електронна пошта |
|
Імʼя користувача |
|
Підказка
Наведений вище приклад і образ Docker визначають IDP із назвою weblate
. Можливо, вам слід налаштувати цей рядок як Relay у вашому IDP.
Дивись також
Розпізнавання за допомогою LDAP¶
Оптимальним способом уможливлення розпізнавання за допомогою LDAP є використанням пакунка django-auth-ldap. Встановити його можна у звичний спосіб:
# Using PyPI
pip install 'django-auth-ldap>=1.3.0'
# Using apt-get
apt-get install python-django-auth-ldap
Підказка
Цей пакунок включено до контейнера Docker, див. Установлення за допомогою Docker.
Примітка
Маємо певні несумісності із модулем Python LDAP 3.1.0, які можуть вам завадити вам користуватися цією версією. Якщо система повідомляє вам про помилку AttributeError: „module“ object has no attribute „_trace_level“, зниження версії python-ldap до 3.0.0 може вирішити проблему.
Після встановлення пакунка, ви можете вставити його до скрипту розпізнавання 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
Примітка
Вам слід вилучити 'social_core.backends.email.EmailAuth'
з параметра django:`AUTHENTICATION_BACKENDS
, інакше користувачі зможуть встановлювати пароль у Weblate і проходити розпізнавання за допомогою пароля. Збереження 'weblate.accounts.auth.WeblateUserBackend'
все одно потрібен для того, щоб встановити права доступу і полегшити роботу з анонімними користувачами. Цей параметр також надає вам змогу входити до системи за допомогою локального адміністративного облікового запису, якщо ви його створили (наприклад, за допомогою createadmin
).
Використання пароля bind¶
Якщо ви не можете скористатися безпосередньою прив’язкою для розпізнавання, вам доведеться скористатися пошуком і вказати користувача для прив’язки пошуку. Приклад:
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¶
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¶
Щоб скористатися розпізнаванням за допомогою CAS, встановіть пакунок подібний до django-cas-ng.
Першим кроком є розкриття поля адреси електронної пошти користувача за допомогою CAS. Цю можливість має бути налаштовано на самому сервері CAS, вона потребує роботи із принаймні версією 2 CAS, оскільки у версії 1 CAS не передбачено підтримки атрибутів взагалі.
Другим кроком є оновлення Weblate для використання вашого сервера CAS і атрибутів.
Щоб встановити django-cas-ng, виконайте такі дії:
pip install django-cas-ng
Після встановлення пакунка, ви можете вставити його до скрипту розпізнавання Django внесенням змін до файла 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")
Нарешті, для прив’язки поля адреси електронної пошти до об’єкта користувача можна скористатися сигналом. Щоб це спрацювало, вам слід імпортувати сигнал з пакунка django-cas-ng і з’єднати ваш код із цим сигналом. Виконання цього завдання у файлів параметрів може спричинити проблеми, тому пропонуємо вам такий варіант:
У методі
django.apps.AppConfig.ready()
налаштувань вашого застосункуУ файлі проєкту
urls.py
(якщо моделей не існує)
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()
Дивись також
Налаштовування стороннього розпізнавання за допомогою Django¶
Загалом, із Weblate має працювати будь-який додаток розпізнавання Django. Просто виконуйте настанови для цього додатка, просто не забудьте встановити модуль користувачів Weblate.
Типово, встановлення полягає у додаванні модуля розпізнавання до запису AUTHENTICATION_BACKENDS
і встановленні застосунку для розпізнавання (якщо таку передбачено) до INSTALLED_APPS
:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Two-factor authentication¶
Added in version 5.7.
Підказка
Two-factor authentication adds another layer of security to your account by requiring more than just a password to sign in.
Weblate supports the following second factors:
- Security keys (WebAuthn)
Both, Passkeys and security keys are supported.
Passkeys validate your identity using touch, facial recognition, a device password, or a PIN as they include user verification.
Security keys are WebAuthn credentials that can only be used as a second factor of authentication, and these only validate user presence.
- Authenticator app (TOTP)
Authenticator apps and browser extensions like Aegis, Bitwarden, Google Authenticator, 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in.
- Recovery codes
Recovery codes can be used to access your account if you lose access to your device and cannot receive two-factor authentication codes.
Keep your recovery codes as safe as your password. We recommend saving them with a password manager such as Bitwarden, 1Password, Authy, or Keeper.
Each user can configure this in Обліковий запис and second factor will be required to sign in addition to the existing authentication method.
This can be enforced for users at the project (see Enforced two-factor authentication) or team level.
The permissions of a team with enforced two-factor authentication won’t be applied to users who do not have it configured.
Розпізнавання за соціальними мережами¶
Завдяки Welcome to Python Social Auth’s documentation!, у Weblate передбачено підтримку розпізнавання за допомогою сторонніх служб, зокрема GitLab, Ubuntu, Fedora тощо.
Будь ласка, ознайомтеся із документацією щодо типових настанов з налаштовування Django Framework.
Примітка
Типово, Weblate покладається на сторонні служби розпізнавання для забезпечення коректності адреси електронної пошти. Якщо у якихось із служб, якими ви хочете скористатися, підтримки перевірки коректності адреси електронної пошти не передбачено, будь ласка, скористайтеся примусовою перевіркою адреси електронної пошти на боці Weblate, налаштувавши для таких служб параметр FORCE_EMAIL_VALIDATION. Приклад:
Дивись також
Pipeline
Вмикання окремих модулів обробки є доволі простою справою — достатньо додати запис до параметра
AUTHENTICATION_BACKENDS
і, можливо, додати ключі, потрібні для вказаного способу розпізнавання. Зауважте, що у деяких модулях обробки типово не надається параметра адреси електронної пошти користувача — вам слід надсилати запит щодо неї явним чином, інакше Weblate не зможе належним чином зберігати авторські права учасників перекладу.Підказка
Більшість серверів автентифікації вимагається протокол HTTPS. Після увімкнення HTTPS на вашому вебсервері налаштуйте Weblate, щоб повідомити про це належним чином, застосувавши
ENABLE_HTTPS
, або за допомогоюWEBLATE_ENABLE_HTTPS
у контейнері Docker.Дивись також
Модуль розпізнавання за допомогою соціальних мереж у Python
Розпізнавання за OpenID¶
Для служб на основі OpenID, зазвичай, достатньо просто вмикання. Вказаний нижче розділ вмикає розпізнавання за OpenID для систем OpenSUSE, Fedora і Ubuntu:
Дивись також
OpenID
Розпізнавання за GitHub¶
Вам слід зареєструвати програму OAuth на GitHub, а потім повідомити Weblate усі її реєстраційні дані:
GitHub слід налаштувати, щоб адреса зворотного виклику була подібно до
https://СЕРВЕР WEBLATE/accounts/complete/github/
.Існують подібні модулі розпізнавання для «GitHub для організацій» та «GitHub для команд». Їхні параметри мають назви
SOCIAL_AUTH_GITHUB_ORG_*
іSOCIAL_AUTH_GITHUB_TEAM_*
. Ці модулі потребують додаткових налаштувань області видимості —SOCIAL_AUTH_GITHUB_ORG_NAME
або``SOCIAL_AUTH_GITHUB_TEAM_ID``. Відповідними адресами зворотних викликів єhttps://СЕРВЕР WEBLATE/accounts/complete/github-org/
іhttps://example.com/accounts/complete/github-teams/
.Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
GitHub
Розпізнавання EE GitHub¶
Вам слід зареєструвати програму OAuth на GitHub, а потім повідомити Weblate усі її реєстраційні дані:
Додаток OAuth GitHub слід налаштувати, щоб адреса зворотного виклику була подібно до
https://СЕРВЕР WEBLATE/accounts/complete/github-enterprise/
.Замість додатка OAuth GitHub, можна також скористатися додатком GitHub. За допомогою додатка GitHub можна надати права доступу до сховищ на рівні організації і/або користувача. Якщо ви вирішите скористатися додатком GitHub, вам слід увімкнути `Доступ: Права лише для читання для користувачів - <Адреси електронної пошти> і Організація - <Учасники>.
Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
GitHub Enterprise
Розпізнавання за Bitbucket¶
Вам слід зареєструвати програму на Bitbucket, а потім повідомити Weblate усі її реєстраційні дані:
Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
Bitbucket
Google OAuth 2¶
To use Google OAuth 2, you need to register an application at <https://console.developers.google.com/> and enable the Google+ API.
Адреса переспрямовування —
https://СЕРВЕР WEBLATE/accounts/complete/google-oauth2/
Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
Google
Facebook OAuth 2¶
Як звично для служб OAuth 2, вам слід зареєструвати вашу програму за допомогою Facebook. Після цього, вам слід налаштувати Weblate на її використання:
Адреса переспрямовування —
https://СЕРВЕР WEBLATE/accounts/complete/facebook/
Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
Facebook
GitLab OAuth 2¶
For using GitLab OAuth 2, you need to register an application at <https://gitlab.com/profile/applications>.
Адреса переспрямовування —
https://СЕРВЕР WEBLATE/accounts/complete/gitlab/
і не забудьте позначити область видимості read_user.Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
GitLab
Gitea OAuth 2¶
For using Gitea OAuth 2, you need to register an application at
https://GITEA SERVER/user/settings/applications
.The redirect URL is
https://WEBLATE SERVER/accounts/complete/gitea/
.Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Примітка
The configuration above also works with Forgejo; for an example of production deployment with Forgejo, see Codeberg Translate
Дивись також
Gitea
Microsoft Azure Active Directory¶
Weblate може бути налаштовано на використання типових або специфічних власників системи розпізнавання.
Адресою переспрямування є
https://СЕРВЕР WEBLATE/accounts/complete/azuread-oauth2/
для звичайного іhttps://СЕРВЕР WEBLATE/accounts/complete/azuread-tenant-oauth2/
для специфічного для орендаря розпізнавання.Вам знадобиться таке:
Ідентифікатор програми (клієнта) можна отримати зі сторінки програми. Ідентифікатор об’єкта у Weblate не використовують.
Ідентифікатор каталогу (орендного) потрібен для розпізнавання для орендованого простору, що, зазвичай, є бажаним.
Значення ключа буде показано одразу після створення ключа для програми. Ідентифікатор ключа у Weblate не використовують.
Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
Microsoft Azure Active Directory
Ідентифікатор¶
For using Slack OAuth 2, you need to register an application at <https://api.slack.com/apps>.
Адреса переспрямовування —
https://СЕРВЕР WEBLATE/accounts/complete/slack/
.Примітка
Надана Weblate адреса зворотного виклику під час розпізнавання містить дані щодо налаштованого домену. Якщо система повідомляє вам про помилки щодо невідповідності, вам варто внести виправлення, див. Установіть належний домен сайта.
Дивись також
Slack
Перевизначення імен методів автентифікації та піктограм¶
Коротке видиме ім’я та піктограму методу автентифікації можна змінити за допомогою параметрів
SOCIAL_AUTH_<NAME>_IMAGE
іSOCIAL_AUTH_<NAME>_TITLE
. Наприклад, перевизначення імені для Auth0 має такий вигляд:Вимикання розпізнавання за паролем¶
Розпізнавання за адресою електронної пошти і паролем можна вимкнути вилученням запису
social_core.backends.email.EmailAuth
зAUTHENTICATION_BACKENDS
. Не вилучайтеweblate.accounts.auth.WeblateUserBackend
— цей запис потрібне для реалізації основних функціональних можливостей Weblate.Вимикання розпізнавання за електронною поштою призведе до вимикання усіх функціональних можливостей, які пов’язано з електронною поштою: запрошення користувачів або можливості скидання паролів.
Порада
Ви все ще можете скористатися для створених тут вручну записів користувачів розпізнаванням за паролями для адміністративного інтерфейсу. Просто перейдіть до
/admin/login/
.Наприклад, розпізнаванням з використанням лише надавача даних Open ID openSUSE Open ID можна скористатися ось так: