خاطرات فنی من

یادداشتهایی در مورد تجربیات فنی من به عنوان یک مهندس نرم افزار برای مراجعه بعدی خودم و احتمالا دیگران.

سعی می کنم مطالب برای دیگران هم قابل استفاده باشند اما به دلیل کمی وقت نمی توانم زیاد نگران نگارش و چینش متن باشم

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

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی