web-dev-qa-db-ja.com

OpenldapとActiveDirectoryの同期

私はしばらくの間グーグルでOpenLDAPとActiveDirectoryの間でユーザーデータベースを同期する最良の方法を見つけるために検索してきましたが、明確な結果はありません!

私が達成したいのは、OpenLDAPにユーザーデータベースを用意し、それらをADに入力して、これらのユーザーがすべてのアプリケーション(電子メール、vpn、ファイルサーバー、プリントサーバー、ほぼすべてのオープンソースアプリ)にアクセスできるようにすることです。すべてのユーザーがWindowsベースとLinuxベースのアプリで同じパスワードを持つことができるように単一のSignOnDBを作成することですが、パスワードが双方向に更新されることを確認したいと思います。

これをどのように行うことができるかについて、誰かが彼の経験を共有できれば幸いです。ありがとうございました!!

3
Bouanani Meher

一方向の同期では機能しますが、かなりの「アセンブリが必要」です。

OpenLDAP→OpenLDAPレプリカ→ActiveDirectory

ここで、中間のOpenLDAPレプリカは永続ストレージではなく Perlバックエンド -を使用します。 LDAP API呼び出し(bindsearchcomparemodifyaddなど)にマップする9つの(前回チェックした)関数を提供するPerlモジュールを作成する必要があります。

このコード内で、必要な属性/オブジェクトクラスと名前のマッピングを実行できます。ソースディストリビューションにはサンプル構成とコードがあります(SampleLDAP.pm)。堅牢な実世界の実装のために、1000〜1500行のコードを見積もります。

少し簡単なアプローチは、変更されたオブジェクトのソースディレクトリをポーリングし、変更をプッシュすることです。実装については、 lsc プロジェクトを参照してください。このアプローチには、遅延とスケーラビリティの問題がある可能性があります。ポーリング方法を使用すると、 syncreplコントロールを追加することによるOpenLDAP検索 で少しごまかすことができます。これにより、back-Perlアプローチのより単純なバージョンが得られます-実装する必要がないという利点APIの場合、変更が発生したときにプッシュされる検索結果を処理し、それらを伝播する(そして状態を保存する/エラー時に再接続する)必要があります。

パスワードの処理、パスワードの属性(userPasswordunicodePwdについてよく考える必要があります。 -))は事実上魔法です。私は常に双方向のパスワード同期から人々に話しかけることができたので、そこでは基本的なアドバイスしか提供できません(私もあなたに話しかけることができない限り;-)

通常のアプローチは、「複雑さのチェック」を装ってパスワードの変更をキャプチャし、必要に応じてパスワードのハッシュ/形式を作成し、それらの値を伝播することです。 PasswdHk を参照してください。

パスワードの変更/リセットの別の方法を使用するようにユーザーを「説得」できる場合があります。これにより、 セルフサービスパスワード (ただし、パスワードは1か所にしか設定されません)のように変更を伝播できます。

Red Hatにはいくつかの 有用なドキュメント があります( 基礎となるDS はOpenLDAPではなくなりましたが)理論の多くはまだ適用されます。 AFAICTの現在のバージョンはまだCentOS6に組み込まれていません。

[〜#〜] pcns [〜#〜] はMicrosoftの方法であり、OpenLDAPにパスワードをプッシュできると思います(ただし、その逆は行いません)。 [〜#〜] xma [〜#〜] 私は使用していませんが、両方を行うと主張しています。

参照: Active DirectoryとOpenLDAPの同期 パスワード同期を排除するKerberosを使用したハイブリッドアプローチをカバーしています(ただし、これによりADが作成されます)認証に権限があります)。

要するに、 lsc のドキュメントを読むことから始めてください、それはあなたが望むことをするかもしれません。

2
mr.spuratic