4

管理者がユーザー アカウントの有効期限を設定できる新しいアカウント ポリシーを openldap に実装したいと考えています。ただし、オブジェクト クラスに関連する属性が見つかりません。

これは、pwdMaxAge などのパスワード属性とは関係ありません。このポリシーの使用は、サブスクリプション サービス用です。ユーザーが一定期間サーバーを購読すると、管理者は購読が終了するアカウントの有効期限を設定します。ユーザーは有効期限前であれば認証され、有効期限を過ぎると認証に失敗します。

openldapでそれを行うことは可能ですか? Google で調べたところ、Microsoft の ActiveDirectory に AccountExpirationDate 属性があることがわかりました。

4

4 に答える 4

5

OpenLDAP またはそのオーバーレイでは、アカウントの有効期限が直接サポートされていません (.NET でもcontrib/)。

Howard Chuは、これにppolicy のpwdMaxAgeを使用することを提案しています。また、猶予ログインを構成している場合 (これは正しいことです)、ユーザーは自分のパスワードを変更して有効期限タイマーをリセットできます。

したがって、これを実装する最良の方法(およびそうではない良い方法) は、(ppolicy 属性) pwdAccountLockedTimeを手動でロックされたアカウントを示すマジック ナンバーに設定する外部タスクを実行することであり、ユーザーがロックを解除することはできません。 .

pwdAccountLockedTime

この属性には、ユーザーのアカウントがロックされた時間が含まれます。アカウントがロックされている場合、ディレクトリに対してユーザーを認証するためにパスワードを使用できなくなる可能性があります。pwdAccountLockedTimeが000001010000Zに設定されている場合、ユーザーのアカウントは永久にロックされており、管理者のみがロックを解除できます。アカウントのロックは、pwdLockoutパスワード ポリシー属性が「TRUE」に設定されている場合にのみ有効になることに注意してください。

この外部タスク (おそらく cronjob ) は、ユーザー レコードをループする際に、ユーザー レコードのカスタム属性 (たとえばexpireTime ) から有効期限の日付/時刻を読み取るような方法で実装できます。そうすれば、有効期限の日時をユーザー レコードに保存できますが、もちろん、ロックアウトはこの外部タスクの実行に完全に依存しています。

または、独自のオーバーレイを作成することもできます。

于 2011-05-27T12:12:48.810 に答える
2

パスワードポリシー拡張機能を見てください。OpenLDAP 2.3 以降でサポートされています。必要な拡張要求/応答制御を実装するために、いくつかのコードを作成する必要がある場合があります。

OpenLDAP を使用している場合は、動的オブジェクト オーバーレイを使用できます。objectClass=dynamicObjectアカウントの作成時に追加entryTTLし、動的オブジェクト更新リクエストを介して適切に設定します。

于 2011-04-06T12:22:27.823 に答える
-1

詳細は省きます - 上記の PPolicy オーバーレイを見てください。できます。AD のような「アカウントの有効期限」はありません。

1 つの解決策は、アカウントの有効期間を計算するスクリプトを実行し、ユーザー属性 pwdPolicySubentry を追加/変更して、それをポリシーの DN に設定することです。ポリシーの DN は、1 秒前のパスワードを期限切れにし、ユーザーがパスワードを変更することを許可しません。 .

クライアントはそれを回避できませんが、ユーザーエントリは実質的にそのまま残ります。

于 2011-05-04T23:45:01.173 に答える