SLAPO-DYNLIST(5) فایل‌های پیکربندی SLAPO-DYNLIST(5)

slapo-dynlist - افزونه روکش فهرست پویا برای slapd

/etc/openldap/slapd.conf

روکش dynlist برای slapd(8) امکان بسط فهرست‌ها و گروه‌های پویا را فراهم می‌کند. هر زمان که مدخلی با یک objectClass خاص (تعریف‌شده در پیکربندی روکش) بازگردانده شود، مواردی از یک ویژگی خاص با مقدار LDAP URI (که آن هم در پیکربندی روکش تعریف شده است) به مدخل‌های متناظر بسط داده می‌شوند.

برای یک فهرست پویا، مقادیر ویژگی‌های فهرست‌شده در URI از مدخل‌های منطبق به مدخل اصلی اضافه می‌شوند. برای جلوگیری از حلقه‌های بی‌پایان بالقوه، هیچ بازگشتی مجاز نیست. مدخل حاصل باید با مدل داده‌ای LDAP مطابقت داشته باشد، بنابراین محدودیت‌ها اعمال می‌شوند. برای نمونه، اگر یک ویژگی SINGLE-VALUE فهرست شده باشد، تنها نخستین مقدار یافت‌شده در طول بسط فهرست در مدخل نهایی ظاهر خواهد شد.

برای یک گروه پویا، DNهای مدخل‌های منطبق به یک ویژگی member در مدخل اصلی اضافه می‌شوند.

تمامی رفتارهای پویا در زمان استفاده از کنترل manageDSAit (RFC 3296) غیرفعال می‌شوند. در آن حالت، محتویات مدخل اصلی بازگردانده می‌شود؛ به این معنی که نشانی‌های URL به جای بسط داده شدن، بازگردانده می‌شوند.

دستورالعمل‌های پیکربندی که مختص روکش dynlist هستند باید با پیشوند dynlist- مشخص شوند تا از تداخل احتمالی با دستورالعمل‌های مختص پایگاه داده زیرین یا سایر روکش‌های پشته‌شده جلوگیری شود.

این دستورالعمل، روکش dynlist را به پایگاه داده فعلی اضافه می‌کند، یا اگر پیش از نمونه‌سازی هر پایگاه داده‌ای به کار رود، آن را به پیشانه (frontend) اضافه می‌نماید؛ برای جزئیات به slapd.conf(5) مراجعه کنید.

این گزینه پیکربندی slapd.conf برای روکش dynlist تعریف شده است. ممکن است چندین بار تکرار شود، و حتماً باید پس از دستورالعمل overlay قرار گیرد.

مقدار group-oc نام objectClass است که بسط پویای داده‌ها را راه‌اندازی می‌کند.

بخش اختیاری URI بسط را فقط به مدخل‌هایی محدود می‌کند که با بخش‌های DN، scope و filter مربوط به این URI مطابقت دارند.

مقدار URL-ad نام attributeDescription است که شامل URI مورد بسط توسط روکش می‌باشد؛ اگر هیچ مقداری موجود نباشد، هیچ بسطی انجام نمی‌گیرد. اگر اشتراک ویژگی‌های درخواست‌شده توسط عملیات جستجو (یا ویژگی مورد ادعا برای مقایسه‌ها) و ویژگی‌های فهرست‌شده در URI تهی باشد، هیچ بسطی برای آن URI خاص رخ نمی‌دهد. این مقدار باید یک زیرنوع از labeledURI باشد.

گزینه‌های باقی‌مانده به این بستگی دارند که یک فهرست پویا یا یک گروه پویا پیکربندی شده باشد.

برای یک فهرست پویا، گزینه‌های مجاز به این فرم هستند:

[<mapped-ad>:<list-ad> ...]

گزینه mapped-ad می‌تواند برای نگاشت مجدد ویژگی‌های به‌دست‌آمده از طریق بسط استفاده شود. گزینه list-ad باید یکی از ویژگی‌های بازگردانده‌شده در بسط URIها در ویژگی URL-ad مدخل پویا باشد. می‌توان از چندین عبارت نگاشت استفاده کرد. توجه داشته باشید که برای قابل استفاده بودن فهرست‌های پویا در یک فیلتر جستجو، ویژگی‌های پویایی که باید فیلتر شوند باید صراحتاً نگاشت گردند. در صورتی که نیازی به تبدیل نباشد، می‌توانند به خودشان نگاشت شوند.

برای یک گروه پویا، گزینه‌های مجاز عبارتند از:

<member-ad>[+<memberOf-ad>[@<static-oc>[*]]]

گزینه member-ad الزامی است؛ این ویژگی DN مدخل‌های حاصل از جستجوی داخلی را فهرست می‌کند. در این حالت، بخش attrs در URIهای ویژگی URL-ad باید غایب باشد، و DNهای تمام مدخل‌های حاصل از بسط URIها به عنوان مقادیر این ویژگی فهرست می‌شوند. عملیات مقایسه‌ای که مقدار ویژگی member-ad مدخل‌های با کلاس شیء group-oc را بررسی می‌کنند، به گونه‌ای اعمال می‌شوند که گویی DN مدخل‌های حاصل از بسط URI، در مدخل group-oc به عنوان مقادیر ویژگی member-ad حضور داشته‌اند. اگر ویژگی اختیاری memberOf-ad نیز تعیین شده باشد، آنگاه با DNهای گروه‌های پویایی که یک مدخل عضو آن‌هاست مقداردهی خواهد شد. اگر کلاس شیء اختیاری static-oc نیز تعیین شده باشد، ویژگی memberOf همچنین با DNهای گروه‌های ایستایی که مدخل عضو آن‌هاست مقداردهی خواهد شد. توجه داشته باشید که استفاده از یک کلاس شیء static-oc یکسان در بیش از یک پیکربندی گروه پویا پشتیبانی نمی‌شود. اگر نویسه اختیاری * نیز مشخص شود، مقادیر member و memberOf برای گروه‌های تودرتو به صورت بازگشتی مقداردهی خواهند شد. توجه داشته باشید که در حال حاضر تودرتویی تنها برای عملیات Search پشتیبانی می‌شود و نه Compares.

این گزینه رفتار روکش را به عملکرد روکش dynlist در OpenLDAP 2.4 تقلیل می‌دهد. این کار پردازش memberOf، پشتیبانی از گروه‌های تودرتو و ارزیابی فیلتر برای مقادیر پویای تولیدشده را غیرفعال می‌کند. مقدار پیش‌فرض FALSE است.

روکش dynlist ممکن است با هر پس‌زمینه‌ای به کار رود، اما عمدتاً برای استفاده با پس‌زمینه‌های ذخیره‌سازی محلی طراحی شده است. در صورتی که بسط URI نیازمند منابع زیادی باشد و با الگوهای مشخص به صورت مکرر رخ دهد، باید اضافه کردن یک proxycache در ادامه پشته روکش‌ها را در نظر گرفت.

به طور پیش‌فرض، بسط‌ها با استفاده از هویت کاربر فعلی LDAP انجام می‌شوند. می‌توان این هویت را با تنظیم ویژگی dgIdentity در مدخل گروه بر روی DN یک کاربر LDAP دیگر بازنویسی کرد. در آن حالت، هنگام بسط دادن URIها در شیء، از dgIdentity استفاده خواهد شد. تنظیم dgIdentity بر روی یک رشته با طول صفر موجب می‌شود که بسط‌ها به صورت ناشناس انجام گیرند. توجه داشته باشید که ویژگی dgIdentity در طرح‌واره dyngroup تعریف شده است، و این طرح‌واره باید پیش از استفاده از قابلیت مجوزدهی dgIdentity بارگذاری شده باشد. اگر ویژگی dgAuthz نیز در مدخل گروه حضور داشته باشد، مقادیر آن برای تعیین این که چه هویت‌هایی مجاز به استفاده از dgIdentity برای بسط گروه هستند به کار می‌روند. مقادیر ویژگی dgAuthz باید با ساختار نگارشی (آزمایشی) OpenLDAP authz مطابقت داشته باشند. هنگام استفاده از memberOf پویا در فیلترهای جستجو، دسترسی جستجو به شبه‌ویژگی entryDN الزامی است.

این مثال تمام آدرس‌های ایمیل یک پایگاه داده را در یک مدخل واحد گردآوری می‌کند؛ پیش از هر چیز، اطمینان حاصل کنید که slapd.conf شامل این دستورالعمل‌ها است:

include /path/to/dyngroup.schema
# ...
database <database>
# ...
overlay dynlist
dynlist-attrset groupOfURLs memberURL

و اینکه slapd فایل dynlist.la را (در صورت کامپایل به عنوان ماژول زمان اجرا) بارگذاری می‌کند؛ سپس مدخلی مانند زیر را به پایگاه داده اضافه کنید:

dn: cn=Dynamic List,ou=Groups,dc=example,dc=com
objectClass: groupOfURLs
cn: Dynamic List
memberURL: ldap:///ou=People,dc=example,dc=com?mail?sub?(objectClass=person)

اگر هیچ <attrs> در URI ارائه نشود، تمام ویژگی‌های (غیرعملیاتی) جمع‌آوری می‌شوند.

مقادیر فهرست فوق نمی‌توانند در یک فیلتر جستجو ارزیابی شوند. برای فعال‌سازی ارزیابی فیلتر روی فهرست پویا، پیکربندی باید تغییر یابد تا ویژگی‌های پویایی که باید فیلتر شوند به طور صریح نگاشت گردند. در این حالت، mail صرفاً به خودش نگاشت شده است.

include /path/to/dyngroup.schema
# ...
database <database>
# ...
overlay dynlist
dynlist-attrset groupOfURLs memberURL mail:mail

این مثال قابلیت گروه پویا را بر روی ویژگی member پیاده‌سازی می‌کند:

include /path/to/dyngroup.schema
# ...
database <database>
# ...
overlay dynlist
dynlist-attrset groupOfURLs memberURL member

یک گروه پویا با مجوزدهی dgIdentity می‌تواند با مدخلی مانند زیر ایجاد شود:

dn: cn=Dynamic Group,ou=Groups,dc=example,dc=com
objectClass: groupOfURLs
objectClass: dgIdentityAux
cn: Dynamic Group
memberURL: ldap:///ou=People,dc=example,dc=com??sub?(objectClass=person)
dgIdentity: cn=Group Proxy,ou=Services,dc=example,dc=com

این مثال قابلیت گروه پویا را گسترش می‌دهد تا یک ویژگی پویای dgMemberOf را به تمام اعضای یک گروه پویا بیفزاید:

include /path/to/dyngroup.schema
# ...
database <database>
# ...
overlay dynlist
dynlist-attrset groupOfURLs memberURL member+dgMemberOf

این مثال قابلیت memberOf پویا را گسترش می‌دهد تا ویژگی memberOf را به تمام اعضای هر دو گروه ایستا و پویا اضافه کند:

include /path/to/dyngroup.schema
# ...
database <database>
# ...
overlay dynlist
dynlist-attrset groupOfURLs memberURL member+memberOf@groupOfNames

این قابلیت memberOf پویا می‌تواند به طور کامل جایگزین عملکرد روکش slapo-memberof(5) شود.

/etc/openldap/slapd.conf
فایل پیکربندی پیش‌فرض slapd

روکش dynlist در نسخه 2.5 بازنویسی شده است تا از یک فضای نام یکپارچه مانند سایر روکش‌ها استفاده کند. به عنوان یک اثر جانبی، پارامترهای cn=config زیر منسوخ شده‌اند و در یک نسخه آتی حذف خواهند شد: olcDlAttrSet با olcDynListAttrSet جایگزین شده است؛ olcDynamicList با olcDynListConfig جایگزین شده است.

slapd.conf(5)، slapd-config(5)، slapd(8). روکش slapo-dynlist(5) از پیکربندی پویا از طریق back-config پشتیبانی می‌کند.

در صورتی که عملیات جستجو از کنترل pagedResults استفاده کند، فیلتر کردن روی گروه‌های پویا ممکن است نتایج ناقصی بازگرداند.

این ماژول در سال ۲۰۰۴ توسط Pierangelo Masarati برای SysNet s.n.c نوشته شد.

نگاشت مجدد ویژگی‌ها در سال ۲۰۰۸ توسط Emmanuel Dreyfus ارائه گردید.

2026-03-09 OpenLDAP 2.6.13