2

新しい Spring Security 3.1 を使用していますが、Spring Security ACL についていくつか質問があります。

  1. オブジェクトがあり、そのオブジェクトの ACL を定義したいとします。ACL エントリを作成し、それをユーザーのグループに割り当てたいと考えています。ロール ( GrantedAuthoritySid) ではなく、1 人のユーザー ( PrincipalSid) ではなく、ユーザーのグループです。例を求めてあらゆる場所を調査しましたが、見つけることができませんでした。このシナリオで役立つ例またはクラスを教えてください。

  2. そこで、最初のオブジェクトに関連する 2 番目のオブジェクトを作成したいと思います (同じユーザーに適用する必要があります)。これは、たとえば、最初のオブジェクトのステータス更新である可能性があります。私のGrantedAuthorityまたPrincipalはは、2 番目のオブジェクトのアクセス許可のマスクが異なります。また、最初のオブジェクトには 2 GrantedAuthorities(2 ACLEntries) があり、ステータス更新には 1 つしかありません。ACL 継承を使用すると、最初のオブジェクトの権限セットが 2 番目のオブジェクトの権限セットと一致しません。GrantedAuthorities私の質問は、異なる許可マスクを保持しながら、2 つのオブジェクトの for が自動的に一貫性を保つように、これをモデル化するにはどうすればよいかということです。1 つのアイデアは、複合パターンを使用して、(ユーザーにリンクするのではなく) 最初のオブジェクトのGrantedAuthorityに 2 番目のオブジェクトをリンクすることです。GrantedAuthority

  3. ACL には所有者がいます。所有者は何のためですか?ACL または ACL エントリに対してどのような役割を果たしますか?

4

2 に答える 2

1

ちょっと複雑です。Spring のソース コードをリバース エンジニアリングして原理を理解しましたが、かなりの時間がかかりました。どのように実装したかは正確には言えませんが (私が取り組んでいるプロジェクトに固有のものであるため)、出発点を提供しようとします。

私がしたことは:

  • カスタムを実装しますorg.springframework.security.acls.sid.Sid。これSidauthorityoruserではなく、id を持ち、2 つの異なるオブジェクトを参照する一種の groupobject を参照します。このグループ オブジェクトを として使用するには、オブジェクトの を としてレコードSidを作成する必要があります。カスタムのテストでチェックする必要がある 0 または 1 以外の整数でなければなりません(以下および Spring ソースコードを参照)。ACL_SididACL_sid.sidACL_sid.principalLookupStrategy
  • カスタムをデータベースからorg.springframework.security.acls.sid.SidRetrievalStrategyImpl取得するように拡張します。Sid
  • カスタムを実装しますorg.springframework.security.acls.jdbc.LookupStrategy。既存の実装をコピーし (クラスが final だったため)、必要に応じて変更しました。
  • デフォルトのSpring ACL構成では、使用する必要のあるクラスが必要ないため(デフォルトではありません)、Spring構成ですべてを結び付けました

Spring のソース コードを見て、それがどのように行われているかを確認してください。

于 2011-11-09T09:56:33.567 に答える
0

ユーザーのグループにオブジェクトを割り当てるには、同じオブジェクトのユーザーごとに ACL エントリが必要です。これにより、大量の ACL レコードが発生する可能性があります。

于 2011-08-08T21:23:01.723 に答える