SLAPO_PPOLICY(5) File Formats Manual SLAPO_PPOLICY(5)

slapo-ppolicy - اورلی سیاست گذرواژه برای slapd

/etc/openldap/slapd.conf

اورلی ppolicy پیاده‌سازی جدیدترین پیش‌نویس سیاست گذرواژه IETF برای LDAP است. هنگامی که نمونه‌سازی شود، کنترل‌های خاص سیاست گذرواژه را رهگیری، رمزگشایی و بر استفاده کلی از پایگاه داده بک‌اند، تغییرات در فیلدهای گذرواژه کاربر و غیره اعمال می‌کند.

این اورلی سازوکارهای گوناگونی برای کنترل گذرواژه ارائه می‌دهد. این سازوکارها شامل طول عمر گذرواژه -- هم حداقل و هم حداکثر سن، کنترل استفاده مجدد و تکرار گذرواژه، انقضای زمانی حساب کاربری، بازنشانی اجباری گذرواژه، محتوای مجاز گذرواژه، و حتی ورودهای ارفاقی (grace logins) می‌شوند. گروه‌های مختلف کاربران را می‌توان با سیاست‌های گذرواژه متفاوتی مرتبط کرد، و هیچ محدودیتی در تعداد سیاست‌های گذرواژه که ممکن است ایجاد شوند وجود ندارد.

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

در هنگام به‌روزرسانی گذرواژه، هویتی که دسترسی manage به ویژگی userPassword دارد، در موارد مربوط به پیش‌نویس سیاست گذرواژه IETF به عنوان مدیر گذرواژه تلقی می‌شود.

توجه داشته باشید که پیش‌نویس سیاست گذرواژه IETF برای LDAP زمانی معنا پیدا می‌کند که یک ویژگی گذرواژه تک‌مقداری در نظر گرفته شود، در حالی که ویژگی userPassword مقادیر چندگانه را مجاز می‌داند. این پیاده‌سازی علیرغم مشخصات آن، تک‌مقداری بودن ویژگی userPassword را اجباری می‌کند.

علاوه بر پشتیبانی از سیاست گذرواژه IETF، این ماژول از کنترل استفاده‌پذیری حساب SunDS (1.3.6.1.4.1.42.2.27.9.5.8) در درخواست‌های جستجو پشتیبانی می‌کند و در صورت پیکربندی، می‌تواند کنترل‌های اعتبار گذرواژه Netscape را ارسال کند.

این گزینه‌های پیکربندی slapd.conf بر اورلی ppolicy اعمال می‌شوند. آن‌ها باید پس از دستور overlay قرار گیرند.

شناسه متمایز (DN) شیء pwdPolicy را مشخص می‌کند تا زمانی که هیچ سیاست خاصی روی مدخل کاربر داده‌شده تنظیم نشده است، استفاده شود. اگر سیاست خاصی برای یک مدخل وجود نداشته باشد و مقدار پیش‌فرضی نیز تعیین نشده باشد، هیچ سیاستی اعمال نخواهد شد.
مشخص می‌کند که تغییرات وضعیت سیاست ناشی از عملیات‌های Bind (مانند ثبت شکست‌ها، قفل شدن حساب و غیره) روی یک مصرف‌کننده (consumer) باید به یک ارائه‌دهنده (provider) فوروارد شوند، به جای اینکه مستقیماً در پایگاه داده محلی مصرف‌کننده نوشته شوند. این تنظیم فقط روی مصرف‌کننده تکثیر (replication consumer) مفید است و همچنین نیازمند پیکربندی مناسب تنظیم updateref و اورلی chain است.
مشخص می‌کند گذرواژه‌های متن شفاف (cleartext) موجود در درخواست‌های Add و Modify پیش از ذخیره‌سازی در پایگاه داده باید هش شوند. این امر مدل اطلاعاتی X.500/LDAP را نقض می‌کند، اما ممکن است برای جبران کلاینت‌های LDAP که برای مدیریت گذرواژه‌ها از عملیات گسترش‌یافته Password Modify استفاده نمی‌کنند، لازم باشد. توصیه می‌شود هنگام استفاده از این گزینه، دسترسی compare، search و read برای همه کاربران دایرکتوری مسدود شود.
کلاینت هنگام انجام Bind به یک حساب قفل‌شده همیشه یک پاسخ LDAP InvalidCredentials دریافت می‌کند. به‌طور پیش‌فرض، هنگامی که کنترل Password Policy در درخواست Bind ارسال شده باشد، یک پاسخ Password Policy بدون تنظیم کد خطای خاصی گنجانده می‌شود. این گزینه پاسخ Password Policy را تغییر می‌دهد تا شامل کد خطای AccountLocked شود. توجه داشته باشید که ارسال کد خطای AccountLocked اطلاعات مفیدی برای مهاجم فراهم می‌کند؛ سامانه‌هایی که به مسائل امنیتی حساس هستند نباید این گزینه را فعال کنند.
در صورت تنظیم، ppolicy کنترل‌های منقضی شدن سیاست گذرواژه (2.16.840.1.113730.3.4.4) و در حال انقضا بودن سیاست گذرواژه (2.16.840.1.113730.3.4.5) را در زمان مناسب ارسال می‌کند. این کنترل‌ها برای درخواست‌های bind که کنترل Password policy در آن‌ها از قبل درخواست شده است ارسال نمی‌شوند. مقدار پیش‌فرض عدم ارسال این کنترل‌ها است.
مسیر یک ماژول بارگذاری‌شدنی حاوی تابع check_password() را برای بررسی‌های تکمیلی کیفیت گذرواژه مشخص می‌کند. استفاده از این ماژول در ادامه ذیل توضیحات کلاس شیء pwdPolicyChecker شرح داده شده است.

نکته: ماژول بارگذاری‌شدنی تعریف‌شده توسط کاربر باید در PATH جستجوی اجرایی استاندارد slapd باشد، یا اینکه باید یک مسیر مطلق ارائه شود.

نکته: استفاده از ppolicy_check_module یک افزونه غیر استاندارد برای پیش‌نویس سیاست گذرواژه LDAP است.

اورلی ppolicy به کلاس شیء pwdPolicy وابسته است. تعریف این کلاس به شرح زیر است:

( 1.3.6.1.4.1.42.2.27.8.2.1
NAME 'pwdPolicy'
AUXILIARY
SUP top
MUST ( pwdAttribute )
MAY (
pwdMinAge $ pwdMaxAge $ pwdInHistory $
pwdCheckQuality $ pwdMinLength $ pwdMaxLength $
pwdExpireWarning $ pwdGraceAuthnLimit $
pwdGraceExpiry $ pwdLockout $ pwdLockoutDuration $
pwdMaxFailure $ pwdFailureCountInterval $
pwdMustChange $ pwdAllowUserChange $
pwdSafeModify $ pwdMaxRecordedFailure $
pwdMinDelay $ pwdMaxDelay $ pwdMaxIdle ) )

کلاس pwdPolicy ساختاری (structural) نیست، بنابراین مدخل‌هایی که از آن استفاده می‌کنند نیازمند یک کلاس شیء ساختاری دیگر هستند. کلاس شیء namedPolicy یک انتخاب مناسب است. namedPolicy نیازمند ویژگی cn است که به عنوان rDN مدخل سیاست مناسب است.

این پیاده‌سازی همچنین یک کلاس شیء اضافی به نام pwdPolicyChecker ارائه می‌دهد که برای بررسی کیفیت گذرواژه استفاده می‌شود (پایین‌تر را ببینید).

( 1.3.6.1.4.1.4754.2.99.1
NAME 'pwdPolicyChecker'
AUXILIARY
SUP top
MAY ( pwdCheckModule $ pwdCheckModuleArg $ pwdUseCheckModule ) )

هر حسابی که باید تحت کنترل سیاست گذرواژه قرار گیرد باید دارای ویژگی pwdPolicySubentry حاوی DN یک مدخل معتبر pwdPolicy باشد، یا اینکه می‌تواند به سادگی از پیش‌فرض پیکربندی‌شده استفاده کند. به این ترتیب کاربران مختلف را می‌توان طبق سیاست‌های متفاوتی مدیریت کرد.

هر یک از بخش‌های زیر به تفصیل به معنی و کاربرد یک ویژگی خاص از این کلاس شیء pwdPolicy می‌پردازند.

pwdAttribute

این ویژگی حاوی نام ویژگی‌ای است که سیاست گذرواژه بر آن اعمال می‌شود. برای مثال، سیاست گذرواژه ممکن است بر ویژگی userPassword اعمال شود.

نکته: در این پیاده‌سازی، تنها مقدار پذیرفته‌شده برای pwdAttribute عبارت است از userPassword .

( 1.3.6.1.4.1.42.2.27.8.1.1
NAME 'pwdAttribute'
EQUALITY objectIdentifierMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )

pwdMinAge

این ویژگی حاوی تعداد ثانیه‌هایی است که باید بین تغییرات مجاز گذرواژه سپری شود. اگر این ویژگی وجود نداشته باشد، مقدار صفر ثانیه فرض می‌شود (یعنی گذرواژه می‌تواند در هر زمان و به هر تعداد دفعات دلخواه تغییر یابد).

( 1.3.6.1.4.1.42.2.27.8.1.2
NAME 'pwdMinAge'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMaxAge

این ویژگی حاوی تعداد ثانیه‌هایی است که پس از آن یک گذرواژه تغییر‌یافته منقضی خواهد شد. اگر این ویژگی وجود نداشته باشد یا اگر مقدار آن صفر (0) باشد، گذرواژه‌ها منقضی نخواهند شد.

( 1.3.6.1.4.1.42.2.27.8.1.3
NAME 'pwdMaxAge'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdInHistory

این ویژگی برای مشخص کردن حداکثر تعداد گذرواژه‌های استفاده‌شده که در ویژگی pwdHistory ذخیره می‌شوند به کار می‌رود. اگر ویژگی pwdInHistory وجود نداشته باشد، یا اگر مقدار آن صفر (0) باشد، گذرواژه‌های استفاده‌شده در pwdHistory ذخیره نخواهند شد و بنابراین هر گذرواژه‌ای که قبلاً استفاده شده است می‌تواند دوباره استفاده شود. در صورتی که گذرواژه توسط rootdn تغییر یابد هیچ بررسی پیشینه‌ای انجام نمی‌شود، هرچند گذرواژه در پیشینه ذخیره خواهد شد.

( 1.3.6.1.4.1.42.2.27.8.1.4
NAME 'pwdInHistory'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdCheckQuality

این ویژگی نشان می‌دهد که آیا و چگونه نحو گذرواژه هنگام تغییر یا افزودن گذرواژه بررسی خواهد شد. اگر این ویژگی وجود نداشته باشد، یا مقدار آن صفر (0) باشد، هیچ بررسی نحوی انجام نخواهد شد. اگر مقدار آن یک (1) باشد، سرور نحو را بررسی می‌کند و در صورتی که سرور به دلیل هش شدن گذرواژه در سمت کلاینت یا هر دلیل دیگری قادر به بررسی نحو نباشد، گذرواژه پذیرفته خواهد شد. اگر مقدار آن دو (2) باشد، سرور نحو را بررسی می‌کند و اگر قادر به بررسی نحو نباشد خطایی برمی‌گرداند و گذرواژه را رد می‌کند.

( 1.3.6.1.4.1.42.2.27.8.1.5
NAME 'pwdCheckQuality'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMinLength

هنگامی که بررسی نحو فعال است (همچنین به ویژگی pwdCheckQuality مراجعه کنید)، این ویژگی حاوی حداقل طول بر حسب بایت است که در یک گذرواژه پذیرفته می‌شود. اگر این ویژگی وجود نداشته باشد، حداقل طول گذرواژه اجباری نمی‌شود. اگر سرور نتواند طول گذرواژه را بررسی کند، خواه به دلیل هش شدن گذرواژه در سمت کلاینت یا هر دلیل دیگر، سرور بسته به مقدار pwdCheckQuality، یا گذرواژه را بدون بررسی می‌پذیرد (اگر pwdCheckQuality برابر صفر (0) یا یک (1) باشد) یا آن را رد می‌کند (اگر pwdCheckQuality برابر دو (2) باشد). در صورتی که تعداد نویسه‌ها باید با توجه به یک کدگذاری خاص اجباری شود، استفاده از یک ppolicy_check_module مناسب الزامی است.

( 1.3.6.1.4.1.42.2.27.8.1.6
NAME 'pwdMinLength'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMaxLength

هنگامی که بررسی نحو فعال است (همچنین به ویژگی pwdCheckQuality مراجعه کنید)، این ویژگی حاوی حداکثر طول بر حسب بایت است که در یک گذرواژه پذیرفته می‌شود. اگر این ویژگی وجود نداشته باشد، حداکثر طول گذرواژه اجباری نمی‌شود. اگر سرور نتواند طول گذرواژه را بررسی کند، خواه به دلیل هش شدن گذرواژه در سمت کلاینت یا هر دلیل دیگر، سرور بسته به مقدار pwdCheckQuality، یا گذرواژه را بدون بررسی می‌پذیرد (اگر pwdCheckQuality برابر صفر (0) یا یک (1) باشد) یا آن را رد می‌کند (اگر pwdCheckQuality برابر دو (2) باشد). در صورتی که تعداد نویسه‌ها باید با توجه به یک کدگذاری خاص اجباری شود، استفاده از یک ppolicy_check_module مناسب الزامی است.

( 1.3.6.1.4.1.42.2.27.8.1.31
NAME 'pwdMaxLength'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdExpireWarning

این ویژگی حاوی حداکثر تعداد ثانیه‌های پیش از موعد انقضای گذرواژه است که پیام‌های هشدار انقضا به کاربری که در حال احراز هویت در دایرکتوری است بازگردانده می‌شود. اگر این ویژگی وجود نداشته باشد، یا اگر مقدار آن صفر (0) باشد، هیچ هشداری ارسال نخواهد شد.

( 1.3.6.1.4.1.42.2.27.8.1.7
NAME 'pwdExpireWarning'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdGraceAuthnLimit

این ویژگی حاوی تعداد دفعاتی است که می‌توان از یک گذرواژه منقضی‌شده برای احراز هویت کاربر در دایرکتوری استفاده کرد. اگر این ویژگی وجود نداشته باشد یا اگر مقدار آن صفر (0) باشد، به کاربران دارای گذرواژه‌های منقضی‌شده اجازه احراز هویت در دایرکتوری داده نخواهد شد.

( 1.3.6.1.4.1.42.2.27.8.1.8
NAME 'pwdGraceAuthnLimit'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdGraceExpiry

این ویژگی تعداد ثانیه‌هایی را مشخص می‌کند که احراز هویت‌های ارفاقی طی آن معتبر هستند. اگر این ویژگی وجود نداشته باشد یا اگر مقدار آن صفر (0) باشد، هیچ محدودیت زمانی برای احراز هویت‌های ارفاقی وجود ندارد.

( 1.3.6.1.4.1.42.2.27.8.1.30
NAME 'pwdGraceExpiry'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdLockout

این ویژگی اقدامی را مشخص می‌کند که باید توسط دایرکتوری هنگامی انجام شود که یک کاربر تعداد معینی تلاش ناموفق برای احراز هویت در دایرکتوری داشته است. اگر pwdLockout تنظیم شده باشد (مقدار آن "TRUE" باشد)، پس از تعداد مشخصی تلاش ناموفق متوالی برای bind، به کاربر اجازه تلاش برای احراز هویت در دایرکتوری داده نخواهد شد. حداکثر تعداد تلاش‌های ناموفق متوالی مجاز برای bind توسط ویژگی pwdMaxFailure مشخص می‌شود. اگر pwdLockout وجود نداشته باشد، یا اگر مقدار آن "FALSE" باشد، از گذرواژه می‌توان برای احراز هویت استفاده کرد صرف نظر از اینکه چه تعداد تلاش ناموفق متوالی برای bind رخ داده باشد.

( 1.3.6.1.4.1.42.2.27.8.1.9
NAME 'pwdLockout'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE )

pwdLockoutDuration

این ویژگی حاوی تعداد ثانیه‌هایی است که طی آن به دلیل تلاش‌های ناموفق متوالی بیش از حد برای bind، نمی‌توان از گذرواژه برای احراز هویت کاربر در دایرکتوری استفاده کرد. (همچنین به pwdLockout و pwdMaxFailure مراجعه کنید.) اگر pwdLockoutDuration وجود نداشته باشد، یا اگر مقدار آن صفر (0) باشد، از گذرواژه نمی‌توان دوباره برای احراز هویت کاربر در دایرکتوری استفاده کرد تا زمانی که توسط مدیر بازنشانی شود.

( 1.3.6.1.4.1.42.2.27.8.1.10
NAME 'pwdLockoutDuration'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMaxFailure

این ویژگی حاوی تعداد تلاش‌های ناموفق متوالی برای bind است که پس از آن ممکن است دیگر نتوان از گذرواژه برای احراز هویت کاربر در دایرکتوری استفاده کرد. اگر pwdMaxFailure وجود نداشته باشد، یا مقدار آن صفر (0) باشد، آنگاه به کاربر اجازه داده می‌شود به تلاش برای احراز هویت در دایرکتوری ادامه دهد، بدون توجه به اینکه چه تعداد تلاش ناموفق متوالی برای bind با DN آن کاربر رخ داده است. (همچنین به pwdLockout و pwdLockoutDuration مراجعه کنید.)

( 1.3.6.1.4.1.42.2.27.8.1.11
NAME 'pwdMaxFailure'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMaxRecordedFailure

این ویژگی حاوی حداکثر تعداد تلاش‌های ناموفق bind است که در مدخل کاربر ذخیره می‌شوند. اگر pwdMaxRecordedFailure وجود نداشته باشد، یا مقدار آن صفر (0) باشد، مقدار پیش‌فرض آن برابر با مقدار pwdMaxFailure خواهد بود. اگر آن مقدار نیز 0 باشد، پیش‌فرض 5 است.

( 1.3.6.1.4.1.42.2.27.8.1.32
NAME 'pwdMaxRecordedFailure'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdFailureCountInterval

این ویژگی حاوی تعداد ثانیه‌هایی است که پس از آن، تلاش‌های ناموفق متوالی قدیمی برای bind از شمارنده شکست پاک می‌شوند، حتی اگر احراز هویت موفقی رخ نداده باشد. اگر pwdFailureCountInterval وجود نداشته باشد، یا مقدار آن صفر (0) باشد، شمارنده شکست فقط با یک احراز هویت موفق بازنشانی خواهد شد.

( 1.3.6.1.4.1.42.2.27.8.1.12
NAME 'pwdFailureCountInterval'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMustChange

این ویژگی مشخص می‌کند آیا کاربران باید هنگامی که پس از تنظیم یا بازنشانی گذرواژه توسط مدیر برای اولین بار به دایرکتوری bind می‌شوند، گذرواژه خود را تغییر دهند یا خیر. اگر pwdMustChange دارای مقدار "TRUE" باشد، کاربران باید هنگامی که پس از تنظیم یا بازنشانی گذرواژه توسط مدیر برای نخستین بار به دایرکتوری bind می‌شوند، گذرواژه خود را تغییر دهند. اگر pwdMustChange وجود نداشته باشد، یا مقدار آن "FALSE" باشد، کاربران پس از آنکه مدیر گذرواژه را تنظیم یا بازنشانی کرد، ملزم به تغییر گذرواژه خود در هنگام bind نیستند.

( 1.3.6.1.4.1.42.2.27.8.1.13
NAME 'pwdMustChange'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE )

pwdAllowUserChange

این ویژگی مشخص می‌کند آیا کاربران مجاز به تغییر گذرواژه خود هستند یا خیر. اگر pwdAllowUserChange روی "TRUE" تنظیم شده باشد، یا اگر این ویژگی وجود نداشته باشد، کاربران مجاز خواهند بود گذرواژه خود را تغییر دهند. اگر مقدار آن "FALSE" باشد، کاربران مجاز به تغییر گذرواژه خود نخواهند بود.

نکته: این بدان معناست که وقتی pwdAllowUserChange روی "TRUE" تنظیم شده باشد، کاربران همچنان، با رعایت کنترل دسترسی، قادر خواهند بود گذرواژه کاربر دیگری را تغییر دهند. این محدودیت فقط برای تغییر گذرواژه خود کاربر اعمال می‌شود. همچنین شایان ذکر است که pwdAllowUserChange در مشخصات فنی برای ارائه یک کنترل دسترسی کلی بر ویژگی گذرواژه در پیاده‌سازی‌هایی تعریف شده بود که کنترل دسترسی ریزدانه را مجاز نمی‌دانند. از آنجا که OpenLDAP کنترل دسترسی ریزدانه ارائه می‌دهد، استفاده از این ویژگی توصیه نمی‌شود؛ در عوض باید از ACLها استفاده شود (برای جزئیات به slapd.access(5) مراجعه کنید).

( 1.3.6.1.4.1.42.2.27.8.1.14
NAME 'pwdAllowUserChange'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE )

pwdSafeModify

این ویژگی نشان می‌دهد که آیا هنگام تغییر گذرواژه، گذرواژه موجود کاربر باید به همراه گذرواژه جدید ارسال شود یا خیر. اگر pwdSafeModify روی "TRUE" تنظیم شده باشد، گذرواژه موجود باید همراه با گذرواژه جدید ارسال شود. اگر این ویژگی وجود نداشته باشد، یا مقدار آن "FALSE" باشد، نیازی به ارسال گذرواژه موجود همراه با گذرواژه جدید نیست.

( 1.3.6.1.4.1.42.2.27.8.1.15
NAME 'pwdSafeModify'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE )

pwdMinDelay

این ویژگی تعداد ثانیه‌های تاخیر در پاسخ به اولین تلاش ناموفق برای احراز هویت را مشخص می‌کند. اگر این ویژگی تنظیم نشده باشد یا صفر (0) باشد، از هیچ تاخیری استفاده نخواهد شد. در صورت تنظیم pwdMinDelay ، ویژگی pwdMaxDelay نیز باید مشخص شود.

توجه داشته باشید که این پیاده‌سازی به جای تاخیر در پاسخ bind، از یک قفل متغیر استفاده می‌کند.

( 1.3.6.1.4.1.42.2.27.8.1.24
NAME 'pwdMinDelay'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMaxDelay

این ویژگی حداکثر تعداد ثانیه‌های تاخیر هنگام پاسخ به یک تلاش ناموفق احراز هویت را مشخص می‌کند. زمان مشخص‌شده در pwdMinDelay به عنوان زمان شروع استفاده می‌شود و سپس در هر بار شکست دو برابر می‌شود تا زمانی که زمان تاخیر بزرگتر یا مساوی با pwdMaxDelay شود (یا یک احراز هویت موفق رخ دهد که شمارنده شکست را بازنشانی می‌کند). در صورت تنظیم pwdMaxDelay ، ویژگی pwdMinDelay نیز باید مشخص شود.

توجه داشته باشید که این پیاده‌سازی به جای تاخیر در پاسخ bind، از یک قفل متغیر استفاده می‌کند.

( 1.3.6.1.4.1.42.2.27.8.1.25
NAME 'pwdMaxDelay'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdMaxIdle

این ویژگی تعداد ثانیه‌هایی را مشخص می‌کند که یک حساب ممکن است بلااستفاده بماند پیش از آنکه قفل شود. اگر این ویژگی تنظیم نشده باشد یا صفر (0) باشد، هیچ بررسی‌ای انجام نمی‌شود. برای اعمال این مورد، قابلیت lastbind باید روی پایگاه داده فعال باشد، یعنی olcLastBind روی TRUE تنظیم شده باشد.

( 1.3.6.1.4.1.42.2.27.8.1.26
NAME 'pwdMaxIdle'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )

pwdUseCheckModule/pwdCheckModuleArg

ویژگی pwdUseCheckModule استفاده از یک ماژول بارگذاری‌شدنی را که پیش‌تر با ppolicy_check_module پیکربندی شده است، برای سیاست جاری فعال می‌کند. این ماژول باید تابع check_password() را پیاده‌سازی نماید. اگر pwdCheckQuality روی یک (1) یا دو (2) تنظیم شده باشد، این تابع پس از گذراندن موفقیت‌آمیز تمام بررسی‌های داخلی انطباق گذرواژه، برای بررسی بیشتر یک گذرواژه جدید فراخوانی خواهد شد. این تابع طبق این الگوی اولیه تابع فراخوانی می‌شود:

int check_password (char *pPasswd, struct berval *pErrmsg, Entry *pEntry, struct berval *pArg);
پارامتر pPasswd شامل گذرواژه متن شفاف کاربر است، و پارامتر pErrmsg به یک struct berval اشاره دارد که دارای فضا برای بازگرداندن جزئیات قابل خواندن برای انسان درباره هر خطایی است که با آن مواجه می‌شود. فیلد bv_len باید اندازه فضای ارائه‌شده توسط فیلد bv_val را در بر داشته باشد.

پارامتر pEntry اختیاری است؛ اگر غیر NULL باشد، اشاره‌گری به مدخلی را حمل می‌کند که گذرواژه آن در حال بررسی است.

پارامتر اختیاری pArg به یک struct berval اشاره دارد که حاوی مقدار pwdCheckModuleArg در سیاست گذرواژه مؤثر است، در صورتی که تنظیم شده باشد؛ در غیر این صورت NULL خواهد بود.

اگر pErrmsg برابر NULL باشد، در این صورت funcName نباید تلاش کند از آن استفاده نماید. مقدار بازگشتی LDAP_SUCCESS از تابع فراخوانی‌شده نشان می‌دهد که گذرواژه قابل قبول است؛ هر مقدار دیگری نشان‌دهنده غیرقابل‌قبول بودن گذرواژه است. اگر گذرواژه غیرقابل‌قبول باشد، سرور خطایی به کلاینت بازمی‌گرداند، و pErrmsg ممکن است برای بازگرداندن توضیحات متنی قابل فهم برای انسان پیرامون خطا استفاده شود. اگر فضای ارسال‌شده توسط فراخواننده بسیار کوچک باشد، تابع می‌تواند آن را با یک بافر تخصیص‌یافته پویا جایگزین کند که بعداً توسط slapd با free() آزاد خواهد شد.

ویژگی pwdCheckModule اکنون منسوخ شده است و نادیده گرفته می‌شود.

( 1.3.6.1.4.1.4754.1.99.1
NAME 'pwdCheckModule'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
OBSOLETE
SINGLE-VALUE )

( 1.3.6.1.4.1.4754.1.99.2
NAME 'pwdCheckModuleArg'
EQUALITY octetStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
DESC 'Argument to pass to check_password() function'
SINGLE-VALUE )

( 1.3.6.1.4.1.4754.1.99.3
NAME 'pwdUseCheckModule'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE )

ویژگی‌های عملیاتی مورد استفاده توسط ماژول ppolicy در مدخل کاربر ذخیره می‌شوند. بیشتر این ویژگی‌ها برای تغییر مستقیم توسط کاربران در نظر گرفته نشده‌اند؛ آن‌ها برای ردیابی فعالیت کاربر در آنجا قرار دارند. این ویژگی‌ها در اینجا به تفصیل شرح داده شده‌اند تا مدیران و کاربران هر دو بتوانند سازوکار درونی ماژول ppolicy را درک کنند.

توجه داشته باشید که پیش‌نویس فعلی سیاست گذرواژه IETF تعریف نمی‌کند که این ویژگی‌های عملیاتی در یک محیط تکثیر (replication) چگونه باید رفتار کنند. به‌طور کلی، تلاش‌های احراز هویت روی یک سرور کپی (replica) تنها بر نسخه رونوشت ویژگی‌های عملیاتی روی همان سرور کپی تأثیر می‌گذارد و هیچ یک از ویژگی‌های مدخل کاربر را روی سرور ارائه‌دهنده (provider) متأثر نخواهد کرد. تغییرات ویژگی‌های عملیاتی ناشی از تلاش‌های احراز هویت روی یک سرور ارائه‌دهنده معمولاً به سرورهای کپی تکثیر می‌شوند (و همچنین هرگونه تغییری را که از سرور کپی نشأت گرفته است رونویسی می‌کنند). این رفتارها تضمین‌شده نیستند و با پیدایش یک مشخصات رسمی دستخوش تغییر خواهند شد.

userPassword

ویژگی userPassword دقیقاً بخشی از ماژول ppolicy نیست. با این حال، این همان ویژگی‌ای است که توسط این ماژول ردیابی و کنترل می‌شود. لطفاً برای تعریف آن به طرح‌واره استاندارد OpenLDAP مراجعه کنید.

pwdPolicySubentry

این ویژگی مستقیماً به زیرمدخل pwdPolicy که قرار است برای این کاربر خاص دایرکتوری استفاده شود اشاره دارد. اگر pwdPolicySubentry وجود داشته باشد، باید شامل DN یک شیء معتبر pwdPolicy باشد. اگر وجود نداشته باشد، ماژول ppolicy قوانین سیاست گذرواژه پیش‌فرض را بر کاربر مرتبط با این DN احراز هویت‌کننده اعمال می‌کند. اگر سیاست پیش‌فرضی وجود نداشته باشد، یا زیرمدخل ارجاع‌شده وجود نداشته باشد، هیچ قانون سیاستی اعمال نخواهد شد.

( 1.3.6.1.4.1.42.2.27.8.1.23
NAME 'pwdPolicySubentry'
DESC 'The pwdPolicy subentry in effect for
this object'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE
USAGE directoryOperation)

pwdChangedTime

این ویژگی آخرین زمانی را نشان می‌دهد که گذرواژه این مدخل تغییر یافته است. این مقدار توسط سیاست انقضای گذرواژه استفاده می‌شود تا تعیین کند آیا گذرواژه برای استفاده در احراز هویت کاربر بیش از حد قدیمی است یا خیر. اگر pwdChangedTime وجود نداشته باشد، گذرواژه کاربر منقضی نخواهد شد.

( 1.3.6.1.4.1.42.2.27.8.1.16
NAME 'pwdChangedTime'
DESC 'The time the password was last changed'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SINGLE-VALUE
NO-USER-MODIFICATION
USAGE directoryOperation)

pwdAccountLockedTime

این ویژگی حاوی زمانی است که حساب کاربر قفل شده است. اگر حساب قفل شده باشد، دیگر نمی‌توان از گذرواژه برای احراز هویت کاربر در دایرکتوری استفاده کرد. اگر pwdAccountLockedTime روی 000001010000Z تنظیم شده باشد، حساب کاربر برای همیشه قفل شده است و تنها می‌تواند توسط یک مدیر باز شود. توجه داشته باشید که قفل شدن حساب تنها زمانی اثر می‌کند که ویژگی سیاست گذرواژه pwdLockout روی "TRUE" تنظیم شده باشد.

( 1.3.6.1.4.1.42.2.27.8.1.17
NAME 'pwdAccountLockedTime'
DESC 'The time an user account was locked'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SINGLE-VALUE
USAGE directoryOperation)

pwdFailureTime

این ویژگی شامل برچسب‌های زمانی هر یک از شکست‌های متوالی احراز هویت است که هنگام تلاش برای احراز هویت در این DN (یعنی حساب) رخ داده است. اگر برچسب‌های زمانی بیش از حدی در اینجا انباشته شود (برای جزئیات به ویژگی سیاست گذرواژه pwdMaxFailure مراجعه کنید)، و ویژگی سیاست گذرواژه pwdLockout روی "TRUE" تنظیم شده باشد، ممکن است حساب قفل شود. (لطفاً به ویژگی سیاست گذرواژه pwdLockout نیز مراجعه کنید.) برچسب‌های زمانی مازاد بر موارد مجاز تعیین‌شده توسط pwdMaxFailure یا pwdMaxRecordedFailure نیز ممکن است پاک شوند. اگر یک احراز هویت موفق در این DN (یعنی در این حساب کاربر) انجام شود، آنگاه pwdFailureTime از مدخل‌ها پاک خواهد شد.

( 1.3.6.1.4.1.42.2.27.8.1.19
NAME 'pwdFailureTime'
DESC 'The timestamps of the last consecutive
authentication failures'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
NO-USER-MODIFICATION
USAGE directoryOperation )

pwdHistory

این ویژگی شامل پیشینه گذرواژه‌های پیش‌تر استفاده‌شده برای این DN (یعنی برای این حساب کاربر) است. مقادیر این ویژگی در قالب رشته‌ای به صورت زیر ذخیره می‌شوند:

pwdHistory=

time "#" syntaxOID "#" length "#" data

time=

GeneralizedTime همان‌طور که در بخش 3.3.13 از [RFC4517] مشخص شده است

syntaxOID = numericoid

این نمایش رشته‌ای از OID ده‌دهی نقطه‌دار است که نحو مورد استفاده برای ذخیره‌سازی گذرواژه را تعریف می‌کند. numericoid در بخش 1.4 از [RFC4512] شرح داده شده است.

length = NumericString

تعداد بایت‌ها (اوکتت‌ها) در data. مشخصات NumericString در بخش 3.3.23 از [RFC4517] آمده است.

data =

اوکتت‌هایی که بیانگر گذرواژه در قالب مشخص‌شده توسط syntaxOID هستند.

این قالب به سرور اجازه می‌دهد پیشینه‌ای از گذرواژه‌هایی را که استفاده شده‌اند ذخیره و منتقل کند. به منظور آنکه تطبیق برابری روی مقادیر این ویژگی به درستی کار کند، فیلد time در قالب GMT است.

( 1.3.6.1.4.1.42.2.27.8.1.20
NAME 'pwdHistory'
DESC 'The history of user passwords'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
EQUALITY octetStringMatch
NO-USER-MODIFICATION
USAGE directoryOperation)

pwdGraceUseTime

این ویژگی شامل فهرستی از برچسب‌های زمانی ورودهایی است که پس از انقضای گذرواژه کاربر در DN انجام شده است. این ورودهای پس از انقضا به عنوان «ورودهای ارفاقی (grace logins)» شناخته می‌شوند. اگر تعداد بیش از حدی از ورودهای ارفاقی استفاده شده باشد (لطفاً به ویژگی سیاست گذرواژه pwdGraceAuthnLimit مراجعه کنید)، دیگر اجازه استفاده از DN برای احراز هویت کاربر در دایرکتوری داده نخواهد شد تا زمانی که مدیر ویژگی userPassword این DN را تغییر دهد.

( 1.3.6.1.4.1.42.2.27.8.1.21
NAME 'pwdGraceUseTime'
DESC 'The timestamps of the grace login once the password has expired'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
EQUALITY generalizedTimeMatch
NO-USER-MODIFICATION
USAGE directoryOperation)

pwdReset

این ویژگی نشان می‌دهد که آیا گذرواژه کاربر توسط مدیر بازنشانی شده است و بنابراین در اولین استفاده از این DN برای احراز هویت در دایرکتوری باید تغییر کند یا خیر. اگر pwdReset روی "TRUE" تنظیم شده باشد، گذرواژه بازنشانی شده است و کاربر باید در اولین احراز هویت آن را تغییر دهد. اگر این ویژگی وجود نداشته باشد یا روی "FALSE" تنظیم شده باشد، نیازی نیست کاربر گذرواژه خود را به دلیل بازنشانی مدیریتی تغییر دهد.

( 1.3.6.1.4.1.42.2.27.8.1.22
NAME 'pwdReset'
DESC 'The indication that the password has
been reset'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE
USAGE directoryOperation)

pwdStartTime

این ویژگی زمانی را مشخص می‌کند که گذرواژه مدخل برای احراز هویت معتبر می‌شود. تلاش‌های احراز هویت صورت‌گرفته پیش از این زمان با شکست مواجه خواهند شد. اگر این ویژگی وجود نداشته باشد، هیچ محدودیتی اعمال نمی‌شود.

( 1.3.6.1.4.1.42.2.27.8.1.27
NAME 'pwdStartTime'
DESC 'The time the password becomes enabled'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE
USAGE directoryOperation )

pwdEndTime

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

( 1.3.6.1.4.1.42.2.27.8.1.28
NAME 'pwdEndTime'
DESC 'The time the password becomes disabled'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE
USAGE directoryOperation )

توجه داشته باشید که pwdStartTime ممکن است روی زمانی بزرگتر یا مساوی با pwdEndTime تنظیم شود؛ این کار صرفاً حساب را غیرفعال می‌کند.

pwdAccountTmpLockoutEnd

این ویژگی نشان می‌دهد که گذرواژه کاربر بر اساس گزینه سیاست pwdMinDelay به‌طور موقت قفل شده است و این قفل چه زمانی پایان می‌یابد.

( 1.3.6.1.4.1.42.2.27.8.1.33
NAME 'pwdAccountTmpLockoutEnd'
DESC 'Temporary lockout end'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
SINGLE-VALUE
NO-USER-MODIFICATION
USAGE directoryOperation )

اگر کنترل استفاده‌پذیری حساب SunDS با یک درخواست جستجو استفاده شود، اورلی اطلاعات اعتبار را به هر مدخل ضمیمه خواهد کرد به شرطی که تمامی شرایط زیر برآورده شوند:

•
یک سیاست گذرواژه وجود داشته باشد که بر مدخل اعمال شود
•
کاربر دسترسی compare به ویژگی گذرواژه مدخل داشته باشد.
•
ویژگی گذرواژه پیکربندی‌شده در مدخل موجود باشد

database mdb
suffix dc=example,dc=com
...
overlay ppolicy
ppolicy_default "cn=Standard,ou=Policies,dc=example,dc=com"

ldap(3)، slapd.conf(5)، slapd-config(5)، slapo-chain(5).

«راهنمای مدیران OpenLDAP» (http://www.OpenLDAP.org/doc/admin)

پیشنهاد سیاست گذرواژه IETF LDAP توسط P. Behera، L. Poitou و J. Sermersheim: مستندشده در سند IETF با عنوان «draft-behera-ldap-password-policy-10.txt».

مشخصات فنی سیاست گذرواژه LDAP هنوز یک استاندارد مصوب نیست و همچنان در حال تکامل است. این کد تا زمان نهایی شدن مشخصات، همچنان دستخوش تغییر خواهد بود.

این ماژول در سال 2004 توسط Howard Chu از شرکت Symas Corporation با مشارکت قابل توجه Neil Dunbar و Kartik Subbarao از Hewlett-Packard نوشته شد.

این صفحه راهنما تا حد زیادی و بی‌پرده از مشخصاتی وام گرفته که ماژول سیاست گذرواژه شرح داده شده بر آن استوار است. این منبع همان پیشنهاد سیاست گذرواژه IETF LDAP توسط P. Behera، L. Poitou و J. Sermersheim است. این پیشنهاد به‌طور کامل در سند IETF به نام draft-behera-ldap-password-policy-10.txt نوشته‌شده در اوت 2009 مستند شده است.

OpenLDAP Software توسط پروژه OpenLDAP در http://www.openldap.org توسعه یافته و نگهداری می‌شود. OpenLDAP Software از انتشار LDAP 3.3 دانشگاه میشیگان مشتق شده است.

2026/03/09 OpenLDAP 2.6.13