Kimlik doğrulama#
Kullanıcı hesabı açma#
Weblate varsayılan kurulumda, yeni açılan kullanıcıların hesaplarını işlemek için sitesindeki bir form olan python-social-auth kullanır. Yeni bir kullanıcı, e-posta adresini onayladıktan sonra, üçüncü taraf hizmetlerden birini kullanarak katkıda bulunabilir veya kimliğini doğrulayabilir.
Yeni kullanıcı hesaplarının açılmasını REGISTRATION_OPEN
komutu ile de kapatabilirsiniz.
Kimlik doğrulama girişimleri Hızı sınırlamak değeriyle sınırlanır.
Kimlik doğrulama arka plan uygulamaları#
Hazır Django çözümü, çeşitli sosyal ağ seçenekleri ile birlikte kimlik doğrulama için kullanılır. Bu özelliği kullanmak, diğer Django temelli projelerin kullanıcı veri tabanını içe aktarabilmenizi sağlar (bilgi almak için: Pootle üzerinden aktarmak).
Django başka yollarla da kimlik doğrulaması yapacak şekilde ayarlanabilir.
Ayrıca bakınız
Kimlik doğrulama ayarları, belgesinde resmi Docker kalıbında kimlik doğrulamasının nasıl yapılandırılacağı anlatılmıştır.
Parola ile kimlik doğrulama#
Varsayılan settings.py
dosyasında mantıklı bir AUTH_PASSWORD_VALIDATORS
kümesi bulunur:
Parola, kişisel bilgilerinize çok benzer bir şey olamaz.
Parola en az 10 karakter uzunluğunda olmalıdır.
Parola yaygın kullanılan bir şey olamaz.
Parola tümüyle rakamlardan oluşamaz.
Parola tek bir karakterden ya da boşluk karakterinden oluşamaz.
Parola daha önce kullandığınız bir parola olamaz.
Bu seçeneği parola ilkenize uygun biçimde değiştirebilirsiniz.
Ek olarak, parola zorluğu ile ilgili oldukça gerçekçi öngörüler veren ve belirli bir eşiğin altında kalan parolaların reddedilmesini sağlayan django-zxcvbn-password dosyasını da yükleyebilirsiniz.
SAML kimlik doğrulaması#
4.1.1 sürümünde geldi.
Lütfen yapılandırma için Python Social Auth yönergelerini izleyin. Önemli farklar:
Weblate,``SOCIAL_AUTH_SAML_ENABLED_IDPS`` içinde
weblate
olarak adlandırılması gereken tek kimlik hizmeti sağlayıcısını destekler.SAML XML üst verileri adresi:
/accounts/metadata/saml/
.Şu seçenekler kendiliğinden doldurulur:
SOCIAL_AUTH_SAML_SP_ENTITY_ID
,SOCIAL_AUTH_SAML_TECHNICAL_CONTACT
,SOCIAL_AUTH_SAML_SUPPORT_CONTACT
Örnek yapılandırma:
# 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"
}
Varsayılan yapılandırma, şu özniteliklerden kullanıcı bilgilerini ayıklar, kimlik hizmeti sağlayıcınızı bu öznitelikleri sunacak şekilde yapılandırın:
Öznitelik |
SAML URI referansı |
---|---|
Ad soyad |
|
Ad |
|
Soyad |
|
E-posta |
|
Kullanıcı adı |
|
İpucu
Yukarıdaki örnek ve Docker görüntüsü weblate
adlı bir kimlik hizmeti sağlayıcısı tanımlamaktadır. Bu dizgeyi kimlik hizmeti sağlayıcınızda Relay olarak yapılandırmanız gerekebilir.
Ayrıca bakınız
LDAP kimlik doğrulaması#
LDAP kimlik doğrulaması en iyi şekilde django-auth-ldap paketi kullanılarak sağlanabilir. Her zamanki gibi kurabilirsiniz:
# Using PyPI
pip install django-auth-ldap>=1.3.0
# Using apt-get
apt-get install python-django-auth-ldap
İpucu
Bu paket Docker kapsayıcısı ile birlikte gelir. Bilgi almak için: Docker ile kurmak.
Not
Python LDAP 3.1.0 modülünde, bu sürümü kullanmanızı engelleyebilecek bazı uyumsuzluklar vardır. AttributeError: ‘module’ nesnesinin ‘_trace_level’_ özniteliği yok hatasıyla karşılaşırsanız, python-ldap modülünü 3.0.0 sürümüne düşürmek yardımcı olabilir.
Paketi kurduktan sonra, Django kimlik doğrulaması ile bağlayabilirsiniz:
# 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
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
weblate createadmin
).
BIND parolasını kullanarak#
Kimlik doğrulaması için doğrudan BIND kullanamıyorsanız, aramayı kullanmanız ve arama için bağlanacak bir kullanıcı belirtmeniz gerekir. Örneğin:
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 bütünleştirmesi#
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
Ayrıca bakınız
CAS kimlik doğrulaması#
CAS kimlik doğrulaması, django-cas-ng gibi bir paket kullanılarak yapılabilir.
Birinci adım, kullanıcının e-posta alanını CAS aracılığıyla açıklamaktır. Bunun CAS sunucusunun kendisinde yapılandırılması gerekir ve CAS v1 öznitelikleri tarafından desteklenmediğinden en az CAS v2 çalıştırmanız gerekir.
İkinci adım, Weblate yapılandırmasını CAS sunucunuzu ve özniteliklerinizi kullanacak şekilde güncellemektir.
django-cas-ng kurmak için:
pip install django-cas-ng
Paketi kurduktan sonra, settings.py
dosyasını değiştirerek Django kimlik doğrulama sistemiyle bağlantı kurabilirsiniz:
# 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")
Son olarak, e-posta alanını kullanıcı nesnesiyle eşlemek için bir sinyal kullanabilirsiniz. Bunun çalışması için sinyali django-cas-ng paketinden içe aktarmanız ve kodunuzu bu sinyale bağlamanız gerekir. Bunu ayarlar dosyasında yapmak sorunlara neden olabilir. Bu nedenle şunları koymanız önerilir:
Uygulamanızın yapılandırmasında :p y:meth:`django:django.apps.AppConfig.ready yöntemi
Projenin
urls.py
dosyasında (herhangi bir model var olmadığında)
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()
Ayrıca bakınız
Üçüncü taraf Django kimlik doğrulamasını yapılandırmak#
Genellikle herhangi bir Django kimlik doğrulama uygulama eki Weblate ile çalışmalıdır. Yalnızca eklentinin yönergelerini izleyin. Weblate kullanıcı arka ucunu kurulmuş olarak tutmayı unutmayın.
Ayrıca bakınız
Genellikle kurulum, AUTHENTICATION_BACKENDS
seçeneğine bir kimlik doğrulama arka ucu eklemekten ve INSTALLED_APPS
içine bir kimlik doğrulama uygulaması (varsa) kurmaktan oluşur:
AUTHENTICATION_BACKENDS = (
# Add authentication backend here
"weblate.accounts.auth.WeblateUserBackend",
)
INSTALLED_APPS += (
# Install authentication app here
)
Sosyal ağ kimlik doğrulaması#
Weblate Welcome to Python Social Auth’s documentation! kullanarak, GitLab, Ubuntu, Fedora gibi birçok üçüncü taraf hizmeti ile kimlik doğrulamayı destekler.
Django Framework belgesinden genel yapılandırma yönergelerine bakabilirsiniz.
Not
Weblate varsayılan olarak, doğrulanmış bir e-posta adresi sağlamak için üçüncü taraf kimlik doğrulama hizmetlerine güvenir. Kullanmak istediğiniz hizmetlerden bazıları bunu desteklemiyorsa, lütfen bunlar için FORCE_EMAIL_VALIDATION yapılandırması ile Weblate tarafında e-posta doğrulamasını zorunlu kılın. Örneğin:
Ayrıca bakınız
Pipeline
Tek tek arka uçları etkinleştirmek oldukça kolaydır. Bunun için yalnızca
AUTHENTICATION_BACKENDS
seçeneği ile bir kayıt ve olabilecek belirli bir kimlik doğrulama yöntemi için gerekli anahtarları eklemek gerekir. Bazı arka uçların varsayılan olarak kullanıcı e-posta adresi sağlamadığını, açıkça istemeniz gerektiğini, yoksa kullanıcılarının yaptığı katkıların hesabının Weblate tarafından düzgün bir şekilde tutulamayacağını unutmayın.İpucu
Kimlik doğrulama arka uçlarının çoğu için HTTPS gerekir. Web sunucunuzda HTTPS özelliğini etkinleştirildikten sonra lütfen Weblate için
ENABLE_HTTPS
ya da Docker kapsayıcısı içinWEBLATE_ENABLE_HTTPS
seçeneklerini yapılandırarak düzgün bir şekilde bildirilmesini sağlayın.Ayrıca bakınız
Python Social Auth arka yüzü
OpenID kimlik doğrulaması#
OpenID kullanan hizmetler için genellikle yalnızca onları etkinleştirmek gerekir. Aşağıdaki bölüm OpenSUSE, Fedora ve Ubuntu için OpenID kimlik doğrulamasını etkinleştirir:
Ayrıca bakınız
OpenID
GitHub kimlik doğrulaması#
GitHub üzerinde bir OAuth uygulaması oluşturduktan sonra tüm erişim bilgilerini Weblate üzerine yazmanız gerekir:
The GitHub should be configured to have callback URL as
https://WEBLATE SERVER/accounts/complete/github/
.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://WEBLATE SERVER/accounts/complete/github-org/
andhttps://WEBLATE SERVER/accounts/complete/github-teams/
.Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
GitHub
GitHub EE authentication#
You need to register an OAuth App on GitHub EE and then tell Weblate all its secrets:
The GitHub OAuth App should be configured to have callback URL as
https://WEBLATE SERVER/accounts/complete/github-enterprise/
.Instead GitHub OAuth App, GitHub App can also be used. With GitHub App permissions can be granted on repositories, organisation and/or user level. If you decide to use GitHub App, you need to enable Access: Read-only permission for Users - <Email addresses> and Organisation - <Members>.
Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
GitHub Enterprise
Bitbucket kimlik doğrulaması#
Bitbucket üzerinde bir OAuth uygulaması oluşturduktan sonra tüm erişim bilgilerini Weblate üzerine yazmanız gerekir:
Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
Bitbucket
Google OAuth 2#
Google OAuth 2 kullanmak için <https://console.developers.google.com/> adresinden bir uygulama kaydedip Google+ API uygulamasını etkinleştirmeniz gerekir.
Yönlendirme adresi:
https://WEBLATE SERVER/accounts/complete/google-oauth2/
Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
Google
Facebook OAuth 2#
OAuth 2 hizmetlerinde her zamanki gibi, uygulamanızı Facebook üzerine kaydetmeniz gerekir. Bunu yaptıkran sonra, Weblate yapılandırmasını uygulamayı kullanacak biçimde ayarlayabilirsiniz:
Yönlendirme adresi:
https://WEBLATE SERVER/accounts/complete/facebook/
Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
Facebook
GitLab OAuth 2#
GitLab OAuth 2 kullanmak için <https://gitlab.com/profile/applications> adresinden bir uygulama kaydetmeniz gerekir.
Yönlendirme adresi:
https://WEBLATE SERVER/accounts/complete/gitlab/
and ensure you mark the read_user scope.Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
GitLab
Microsoft Azure Active Directory#
Weblate, kimlik doğrulaması için genel ya da belirli kiracıları kullanacak şekilde yapılandırılabilir.
Yönlendirme adresi: Genel kiracılar için
https://WEBLATE SERVER/accounts/complete/azuread-oauth2/
ve belirli kiracılar içinhttps://WEBLATE SERVER/accounts/complete/azuread-tenant-oauth2/
biçimindedir.You will need following:
Application (client) ID can be obtained from application page. Object ID is not used in Weblate.
Directory (tenant) ID is needed for tenant scoped authentication, what is usually desired.
Secret value is displayed once you generate a secret for an application. Secret ID is not used in Weblate.
Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
Microsoft Azure Active Directory
Slack#
Slack OAuth 2 kullanmak için <https://api.slack.com/apps> adresinden bir uygulama kaydetmeniz gerekir.
Yönlendirme adresi:
https://WEBLATE SERVER/accounts/complete/slack/
.Not
Weblate, kimlik doğrulaması yapılırken belirtilen geri çağırma adresinde yapılandırılmış etki alanı bulunur. Adres uyuşmazlığıyla ilgili sorunlar görürseniz bu ayarı düzeltmek isteyebilirsiniz. Bilgi almak için: Doğru site etki alanını ayarlayın.
Ayrıca bakınız
Slack
Kimlik doğrulama yöntemi adlarını ve simgelerini değiştirmek#
Kimlik doğrulama yönteminin görüntülenen adını ve simgesini
SOCIAL_AUTH_<NAME>_IMAGE
veSOCIAL_AUTH_<NAME>_TITLE
ayarları ile değiştirebilirsiniz. Örneğin Auth0 adı değiştirildiğinde şöyle görüntülenir:Parola ile kimlik doğrulamayı kapatmak#
E-posta ve parola kimlik doğrulaması
AUTHENTICATION_BACKENDS
bölümündeki``social_core.backends.email.EmailAuth`` seçeneği kaldırılarak kapatılabilir. Temel Weblate işlevleri için gerekli olduğundan weblate.accounts.auth.WeblateUserBackend` seçeneğini her zaman orada tutun.E-posta kimlik doğrulamasını devre dışı bırakmak, e-postay ile ilgili tüm işlevleri (kullanıcı daveti ya da parola sıfırlama özelliği) devre dışı bırakır.
Tüyo
Yönetici arayüzü için, orada el ile oluşturduğunuz kullanıcılarda parola ile kimlik doğrulamasını kullanmayı sürdürebilirsiniz. ``/admin/login/``adresine gitmeniz yeterlidir.
Örneğin, yalnızca openSUSE Open ID hizmet sağlayıcısını kullanan kimlik doğrulaması şunu kullanarak yapılabilir: