Active directory Authentication در Django
همانطور که می دانید Active Directory از پروتکل LDAP استفاده می کند. بنابراین چیزی که ما می خواهیم درواقع LDAP Authentication in Django است.
برای این کار اول باید پکیج python-ldap را نصب کنید. در لبنوکس با دستور
pip install python-ldap
این کار به سادگی انجام می شود. اما در ویندوز ممکن است با مشکلاتی مواجه شوید. می توانید از این صفحه فایل whl مناسب را دریافت و نصب کنید. دستور نصب به عنوان مثال چنین چیزی خواهد بود:
pip install .\python_ldap-3.4.0-cp311-cp311-win_amd64.whl
سپس پکیج django-auth-ldap را نصب کنید:
pip install django-auth-ldap
لازم است تنظیمات زیر را در فایل Setting.py انجام دهید:
import ldap from django_auth_ldap.config import LDAPSearch # Django Ldap Authentication AUTH_LDAP_SERVER_URI = "ldap://domainName.org" AUTH_LDAP_BIND_DN = "CN=Test Test,OU=4th-level-OU,OU=3rd-level-OU,OU=2nd-level-OU,OU=1st-level-OU,DC= domainName,DC=org" AUTH_LDAP_BIND_PASSWORD = "test-password" AUTH_LDAP_USER_SEARCH = LDAPSearch( " OU=1st-level-OU,DC= domainName,DC=org ", ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)" ) AUTHENTICATION_BACKENDS = [ "django_auth_ldap.backend.LDAPBackend", "django.contrib.auth.backends.ModelBackend", ]
AUTH_LDAP_SERVER_URI نشانی DC شماست.
در بعضی از DC ها امکان Anonymous Authentication وجود دارد. اما اگر در سرور شما این امکان نیست، یعنی برای اینکه Authentication انجام دهید باید یک کاربر معتبر باشید. AUTH_LDAP_BIND_DN مشخصات کاربری است که می خواهید از آن برای Authentication استفاده کنید. مقدار این فیلد را می توانید از ActiveDirectory بیرون بیاورید. برای این کار از منوی View گزینه Advanced Features را تیک بزنید.
سپس از ساختار درختی به پوشه ای که کاربر مورد نظر در آن قرار دارد بروید:
سپس مشخصات کاربری که می خواهید را باز کنید و به تب Attribute Editor بروید. آنجا مقدار مربوط به distinguished name را پیدا و کپی کنید.
برای پارارمتر اول LDAPSearch، دقیقا همان چیزی که در پایان مقدار AUTH_LDAP_BIND_DN وارد کردید را وارد کنید.
دو خط آخر در واقع می گوید که شما دو روش برای Authentication دارید. هم با Active Directory و هم با Django Authentication