私はしばらくの間グーグルでOpenLDAPとActiveDirectoryの間でユーザーデータベースを同期する最良の方法を見つけるために検索してきましたが、明確な結果はありません!
私が達成したいのは、OpenLDAPにユーザーデータベースを用意し、それらをADに入力して、これらのユーザーがすべてのアプリケーション(電子メール、vpn、ファイルサーバー、プリントサーバー、ほぼすべてのオープンソースアプリ)にアクセスできるようにすることです。すべてのユーザーがWindowsベースとLinuxベースのアプリで同じパスワードを持つことができるように単一のSignOnDBを作成することですが、パスワードが双方向に更新されることを確認したいと思います。
これをどのように行うことができるかについて、誰かが彼の経験を共有できれば幸いです。ありがとうございました!!
一方向の同期では機能しますが、かなりの「アセンブリが必要」です。
OpenLDAP→OpenLDAPレプリカ→ActiveDirectory
ここで、中間のOpenLDAPレプリカは永続ストレージではなく Perlバックエンド -を使用します。 LDAP API呼び出し(bind
、search
、compare
、modify
、add
など)にマップする9つの(前回チェックした)関数を提供するPerlモジュールを作成する必要があります。
このコード内で、必要な属性/オブジェクトクラスと名前のマッピングを実行できます。ソースディストリビューションにはサンプル構成とコードがあります(SampleLDAP.pm
)。堅牢な実世界の実装のために、1000〜1500行のコードを見積もります。
少し簡単なアプローチは、変更されたオブジェクトのソースディレクトリをポーリングし、変更をプッシュすることです。実装については、 lsc プロジェクトを参照してください。このアプローチには、遅延とスケーラビリティの問題がある可能性があります。ポーリング方法を使用すると、 syncreplコントロールを追加することによるOpenLDAP検索 で少しごまかすことができます。これにより、back-Perlアプローチのより単純なバージョンが得られます-実装する必要がないという利点APIの場合、変更が発生したときにプッシュされる検索結果を処理し、それらを伝播する(そして状態を保存する/エラー時に再接続する)必要があります。
パスワードの処理、パスワードの属性(userPassword、unicodePwdについてよく考える必要があります。 -))は事実上魔法です。私は常に双方向のパスワード同期から人々に話しかけることができたので、そこでは基本的なアドバイスしか提供できません(私もあなたに話しかけることができない限り;-)
通常のアプローチは、「複雑さのチェック」を装ってパスワードの変更をキャプチャし、必要に応じてパスワードのハッシュ/形式を作成し、それらの値を伝播することです。 PasswdHk を参照してください。
パスワードの変更/リセットの別の方法を使用するようにユーザーを「説得」できる場合があります。これにより、 セルフサービスパスワード (ただし、パスワードは1か所にしか設定されません)のように変更を伝播できます。
Red Hatにはいくつかの 有用なドキュメント があります( 基礎となるDS はOpenLDAPではなくなりましたが)理論の多くはまだ適用されます。 AFAICTの現在のバージョンはまだCentOS6に組み込まれていません。
[〜#〜] pcns [〜#〜] はMicrosoftの方法であり、OpenLDAPにパスワードをプッシュできると思います(ただし、その逆は行いません)。 [〜#〜] xma [〜#〜] 私は使用していませんが、両方を行うと主張しています。
参照: Active DirectoryとOpenLDAPの同期 パスワード同期を排除するKerberosを使用したハイブリッドアプローチをカバーしています(ただし、これによりADが作成されます)認証に権限があります)。
要するに、 lsc のドキュメントを読むことから始めてください、それはあなたが望むことをするかもしれません。