2011-08-02 10 views
3

私は、すべてのDB対話ニーズにHibernateを使用するSpring MVC上に構築されたアプリケーションを持っています。 LDAPインフラストラクチャを使用して、名前や電子メールなどの基本的なユーザーデータや認証や承認の必要性など、ユーザー情報を管理するアプリケーションを更新する必要があります。Spring Security、Spring LDAP、およびHibernateでユーザー情報を処理する方法は?

これまではすべてが1つのスポット(DB)になっていたため、Hibernateは必要なクエリで開始するときに必要に応じて情報の取得を管理しているため、レポートはすべてかなり簡単です。 Hibernateはデータを遅延ロードするので、ユーザーの名前などを取得するのは非常に簡単です。

ユーザ情報をLDAPで動かすことを望んでいるため、Hibernateはユーザのデータを管理しないため、その場でユーザ情報を埋め込むことができなくなります。 Nameなどのユーザーデータを取得する必要がある場合、LDAPを使用してユーザーデータを駆動し、認証/承認を処理するにはどうすればよいでしょうか。

私たちは、LDAPがデータの「ソース」として扱われ、現在のシステムはそのままの状態でハイブリッドなアプローチをとることを検討しました。これは、ライブトランザクションが最新の情報を使用するようにLDAPに対して更新するトランザクション処理コードを変更し、アプリケーションDBをレポート目的のために最新の状態に保つためにLDAPに対して定期的に同期する必要があります。

この解決方法は少しばかげているように見えますが、動く部分がたくさんあるようですが、ウェブ上の他の場所ではこのテーマをあまり見つけられませんでした。

ユーザー情報はどのように処理する必要がありますか?すべてのユーザー情報に簡単にアクセスでき、レポート作成のためにシステムの残りの部分に簡単に結び付けることができるように、アプリを構成する方法は? SpringのLDAPとHibernateを統合して、データレイヤー上のレイヤーを知る必要がない方法はありますか?または、LDAPから既存のデータベースに情報を引き込むのが最も簡単な方法ですか?

+0

データモデルにはユーザーへの参照があるため、ユーザーデータベースエンティティは必要ですか? – Ralph

+0

@Ralph - はい、他のエンティティが特定のユーザーに接続されています(たとえば、ユーザーXが操作Yを受けました)。 – cdeszaq

答えて

1

と統合し、その後、私の提案は、ビジネスstuffからセキュリティのものをsepareteすることです。

これは、ユーザテーブル(ログイン、パスワード、...)からセキュリティに必要な情報だけを削除するため、buinessケースを実装するために必要なものが残るようにします。

次に、セキュリティスタッフがLDAPに基づいているように書き換えます。私はあなたが与えられたprinipalのユーザデータベースオブジェクトを取得する方法を見つけると思います。

新しいユーザーが新しいログインを取得した場合、新しいユーザーデータベースエンティティを作成する方法は1つだけです。あなたは最良のものを強くお使いのアプリケーションに依存しているもの3つの選択肢、持っている:

  • をあなたが最初
  • それを必要とする場合、ユーザーが最初
  • のログインデータベース・エンティティを作成した場合、データベースのエンティティを作成し、データベースのエンティティを作成します。それがLDAO(または後でいくつかのナイト)で作成された場合、たとえばcronジョブ、またはいくつかのSpring Schedulingサービスがあります。
+1

これは私が行った解決策です。ユーザー情報(システム上のアカウントとアカウント内の情報の両方)は、chronジョブでLDAPから取得されます。 – cdeszaq

0

私はこれをすべてのSpring開発に使用します。これは、LDAP上のセクションがあり、それが他のエンティティから使用されているので、あなたは、まったくユーザーテーブルをドロップすることができない場合は休止状態

http://www.manning.com/walls4/

関連する問題