0

私が持っている質問は、RavenDbとAuthorizationバンドルを使用してサービス間でドキュメントを保護することです。

私はすべてのものを管理する責任がある「アカウント」サービス「ユーザー」を持っています。

私は、壁の投稿、会話など、すべての「メッセージング」を担当する「メッセージング」サービスを持っています。

このサービスで誰が何をしたかを追跡するために、新しいメッセージが投稿されたときに、メッセージと2つのUserProxyオブジェクトを作成します(UserIdプロパティとUserNameプロパティのみを持つUserオブジェクトを切り取ります-これらは子オブジェクトとしてWallPostドキュメントに保存されるため、 tそれ自体で文書化)

ユーザーが別のユーザーの壁に何かを投稿するとき、私は許可したいだけです:

  • 元の投稿者、受信者、管理者を削除/編集する
  • 元の投稿者、受信者、管理者、および受信者のすべての友達に表示

私はまた、画像/ビデオを担当するメディアサービス、すべての音楽イベントのためのMusicEventサービスを持っています-それらはすべて同様の設定を持っている必要があります。

私の質問はこれです:

*アカウントサービスは、役割と権限を持つマスターユーザーを保存する必要があります-ユーザーを求められたときに、役割と権限を持つdtoを送り返すことができます(分厚い可能性があります)

*メッセージングサービスは、独自の役割と権限のセットを使用して、独自のユーザーのコピーを維持する必要がありますか?

1つ目は一元化されているため、先に進むのが簡単ですが、2つ目はおそらく少し危険に見えますが、AccountServiceがユーザー名を変更すると問題が発生します。イベントをesbに送信し、関連するすべてのサービスに取得してもらうことができます。アップデートの世話をしますが、それは複雑に聞こえます。

FTR-私はオプション2-非集中型の方法に動いています。

4

2 に答える 2

0

個人的には、役割と権限を担当する IT / 管理サービスなど、3 番目のサービスの導入を考えています。これらは、アカウント サービスまたはメッセージング サービスで説明されているものとは異なるビジネス機能/機能であることがわかりました。そのタイプの機能を担当するサービスは、アカウントとメッセージングの実際の機能領域からサービスのセキュリティ面を分離します。アカウントは、引き続きアカウント情報の所有者である可能性があります。メッセージング サービスは実際にはユーザーを識別する必要があるだけなので、その作業を行うために追加のユーザー情報 (メール アドレスなど) が必要でない限り、ここではユーザー ID / ユーザー名を使用するだけで十分です。アカウントが情報の所有者である限り、このインスタンスでデータを複製しても問題ありません。

于 2011-02-21T09:40:01.890 に答える
0

Ayende answered this for me quite nicely on his blog:

http://ayende.com/Blog/archive/2011/02/17/distributed-authorization-with-ravendb.aspx

于 2011-03-02T13:41:19.290 に答える