LDAP چیست؟
LDAP از استانداردهای موجود در X.500 ( استاندارد X.500 یک استاندارد جامع تر برای تعریف، نگهداری و مدیریت دایرکتوری های عمومی است. این استاندارد برای نگهداری اطلاعات عمومی (جهانی) استفاده می شود مانند آنچه در DNS استفاده شده است) پیروی می کند. اما LDAP از آن ساده تر و عملی تر است و برخلاف X.500، TCP/IP را نیز پشتیبانی می کند که برای استفاده در اینترنت نیز مفید است. LDAP سبک تر از X.500 است و به همین دلیل گاهی به آن X.500 Lite نیز گفته می شود.
اما X.500 یک مدل کلی برای سرویس های مرتبط با دایرکتوری ها، در OSI (Open System Interconnection) است. این مدل شامل چهارچوب های کلی و پادمان هایی برای به روز نگه داشتن شاخه و پرسش و جو (query) از آن است. پادمان اصلی موجود در X.500 ، DAP است که ساختار کامل و توابع بسیار زیادی دارد. همین عامل باعث پیچیدگی در آن شده است و استفاده از X.500 را مشکل کرده است.
برخلاف X.500 ، LDAP از مقبولیت خوبی برخوردار است و به یک فناوری استراتژیک تبدیل شده است که اکثر تولیدکنندگان نرم افزار از آن پشتیبانی می کنند.
دایرکتوری (Directory)
دایرکتوری یک فهرست از اشیاء است که اطلاعات مربوط به آنها براساس یک ترتیبِ خاص مرتب شده اند. برای مثال اطلاعات تلفن های یک شهر، مثال خوبی از یک دایرکتوری است که بر حسب نام افراد، طبقه بندی شده اند. در این تلفن دایرکتوری، اشیاء، افراد هستند که بر حسب نام، مرتب شده اند و اطلاعات مربوطه به هر فرد، آدرس و شماره تلفن آن فرد است.
مثال های دیگری که می توان در این مورد از آنها نام برد، کاتالوگ ها، در یک کتابخانه است یا دایرکتوری کاربران، که به شما این اجازه را می دهد تا آدرس پست الکترونیک یا شماره فاکس کاربران را پیدا کنید.
در واقع دایرکتوری ها مانند پایگاه داده ها هستند با این تفاوت که دایرکتوری ها، برای منظور خاصی تعبیه شده اند:
- بیشتر برای خوانده شدن طراحی شده اند، تا نوشتن و ایجاد تغییرات در آنها.
- یک نمای (view) ثابت از اطلاعات را به نمایش می گذارند.
- تغییرات در آنها ساده است و معمولا تراکنش (transaction) را پشتیبانی نمی کنند.
- برای دسترسی به دایرکتوری از یک پادمان شبکه استفاده می شود.
درخواست ها با نام Directory کاربر و سرویس دهنده ها با نام Directory Server شناخته می شوند. برخی از دایرکتوری سرویس های معروف عبارتند از:
- File Servers
- Mail Servers
- Print Servers
- Web Servers
توضیحات بیشتر درباره LDAP
LDAP ، یک پادمان مبتنی بر پیام را، بین سرویس دهنده و سرویس گیرنده، برقرار می کند. پیام های متفاوتی بین سرویس دهنده و سرویس گیرنده ممکن است رد و بدل گردد. سرویس دهنده و سرویس گیرنده می توانند هر کدام با انتخاب روش های معمول، به شیوه دلخواه پیاده سازی شوند (این از مزایای LDAP است) و سرویس دهنده و سرویس گیرنده هر کدام می تواند از دو تکنیک جداگانه استفاده کنند بدون اینکه مشکلی در ارتباط با یکدیگر داشته باشند.
LDAP یک پادمان ارتباطی مشخص می کند که در آن، یک پیام از سرویس گیرنده، برای استفاده و دسترسی به اطلاعات یک دایرکتوری X.500 ، به سرویس دهنده ارسال می گردد. اکثر سرویس دهندگاه LDAP از نسخه 3.0 آن استفاده می کنند. دایرکتوری ها اغلب با یک مدل ارتباطی کاربر – کارگزار (Client – Server) قابل دسترسی هستند.
برنامه ای که در خواست خواندن، یا ایجاد تغییر در دایرکتوری را دارد، به طور مستقیم نمی تواند چنین کاری را انجام بدهد بلکه با استفاده از یک سرویس میانی قادر به انجام این کار خواهد بود به این صورت که یک API فراخوانی می شود و آن API، پیامی به یک فرآیند دیگر می فرستد و آن فرآیند با استفاده از TCP/IP به اطلاعات دسترسی خواهد داشت. پورت استاندارد برای ارتباط امن، پورت 636 و برای حالت عادی 389 است.
تلاش برای استفاده از XML در LDAP و استفاده در وب سرویس ها، منجر به زبانی به نام DSML شد که این زبان به استفاده کنندگان از دایرکتوری ها این امکان را می داد، که بدون نوشتن Interface برای کار با API های مربوطه، به دایرکتوری ها دسترسی داشته، بتوانند با آنها کار کنند.
انواع دایرکتوری
انواع دایرکتوری عبارتند از:
- محلی (Local)
- عمومی (Global)
- متمرکز (Centralized)
- توزیع شده (Distributed)
موارد بالا دو به دو در مقابل همدیگر هستند. معنای هرکدام تا حدودی در ذهن آشنا است. برای مثال در مورد دایرکتوری اطلاعات افراد یک شرکت، دایرکتری Local، شامل اطلاعات افراد در یک تیم یا واحد باشند و دایرکتوری Global شامل اطلاعات کل شرکت است.
در صورتی که اطلاعات در روی یک دستگاه و در یک مکان متمرکز قرار گرفته باشد، Centerilized و در صورتی که به صورت توزیع شده و در چند مکان نگهداری شود، Distributred گفته می شود. (به طور مشخص اطلاعات در حالت دوم بصورت تقسیم شده در چند مکان قرار خواهد شد)
مثال
اطلاعات در یک دایرکتوری در یک ساختار مانند درخت (tree) ذخیره می شوند که به آن درخت اطلاعاتی دایرکتوری (Directory Information Tree – DIT)گفته می شود و هر شی ء با یک مشخصه شناخته می شود که به آن نام متمایز (Distinguished Name – DN) گفته می شود. هر نام متمایز (DN) یک عنصر در درخت را، مشخص می کند. هر نام متمایز می تواند از چند نام متمایز مرتبط (Relative Distinguished Name – RDN) تشکیل شده باشد. برای مثال، یک نام متمایز، آورده شده است که نام های متمایز مرتبط آن با کاما از هم جدا شده اند:
cn=thomas,ou=itso,o=ibm
جدول نام های متمایز معتبر(RDN)
String | Attribute type |
DC | domainComponent |
CN | commonName |
OU | organizationalUnitName |
O | organizationName |
STREET | streetAddress |
L | LocalityName |
ST | StateOrProvinceName |
C | CountryName |
UID | Userid |
نمونه درخت اطلاعاتی دایرکتوری (DIT)
استفاده از LDAP به صورت عملی
APIای که در LDAP در اختیار شما قرار می گیرد، سازوکاری فراهم می کند تا در یک دایرکتوری (که بطور عام، یک اینترنت دایرکتوری است) کارهای معمول مانند وصل شدن، جستجو و تغییرات را انجام دهید. برخلاف بقیه پادمان های اینترنت، LDAP دارای یک APIمشخص است که نوشتن یک سرویس مرتبط با یک Internet Directory را ساده می کند.
استفاده کردن از یک کارگزار LDAP شامل 4 بخش اصلی است :
- ایجاد و شروع یک Session : وقتی یک Session ایجاد می کنید، این Session ، مقادیر پیش فرض را، به خود می گیرد. اطلاعاتی که در این Session نگهداری می شود عبارتند از وضعیت کنونی Session، مدت اتصال، شماره ی نسخه ی در حال استفاده و برخی ملاحظات امنیتی. پس از ایجاد (Initialize) کردن session شما یک handle خواهید داشت که با استفاده از آن می توانید برخی مقادیر پیش فرض را تغییر دهید.
- مقداردهی اولیه (اختیاری) : تغییر برخی مقادیر پیش فرض
- اتصال به کارگزار (اختیاری)
- Bind شدن به کارگزار. در این مرحله کارگزار، کاربر را اعتبارسنجی می کند. در صورت تأیید اعتبار کاربر، در حد اختیارات خود اجازه دسترسی به توابع کارگزار را دارا خواهد بود. اگر شما این کار را انجام ندهید به عنوان کاربر anounymous به کارگزار معرفی خواهید شد و در حد کاربر میهمان به امکانات کارگزار دسترسی خواهید داشت.
Active Directory به عنوان یکی از مهمترین بخش های از ویندوز بر پایه LDAP پیاده سازی شده است. Active Directory به دغدغه های کاربران برای پیدا کردن منابع و سرویس ها پایان داد و بی تردید می توان آن را مهمترین خصوصیت افزوده شده به ویندوزهای سری 2000 دانست.