0

我的问题是使用 RavenDb 和授权包保护跨服务的文档:

我有一个“帐户”服务,负责管理所有“用户”。

我有一个“消息”服务,它负责所有“消息”,即墙帖、对话等。

为了跟踪谁在此服务中做了什么,当发布一条新消息时,我创建了消息和两个 UserProxy 对象(减少只有 UserId 和 UserName 属性的用户对象 - 这些作为子对象存储在 WallPost 文档中,因此它们不是t 文件本身)

当用户向另一个用户墙发布内容时,我只想允许:

  • 删除/编辑原始海报、收件人和管理员
  • 查看原始发帖人、收件人、管理员和收件人的所有朋友

我还有一个负责图像/视频的媒体服务,一个用于所有音乐事件的 MusicEvent 服务——它们都需要有类似的设置。

我的问题是这样的:

*帐户服务是否应该存储具有角色和权限的主用户 - 当它被要求提供用户时,它可以发送回具有角色和权限的 dto(可能会变得笨拙)

*消息服务是否应该维护它自己的用户副本 - 具有自己的角色和权限集?

第一个更简单,因为它是集中式的 - 但对我来说看起来有点狡猾关心更新 - 但这听起来很复杂。

FTR - 我倾向于选项 2 - 非集中式方法。

4

2 回答 2

0

就个人而言,我会考虑引入第三种服务——例如负责角色和权限的 IT / 管理服务。令我震惊的是,这些业务功能/功能与帐户或消息服务中描述的业务功能/功能不同。负责此类功能的服务会将您的服务的安全方面与帐户和消息传递的实际功能区域分离。帐户仍然是帐户信息的所有者。消息服务实际上只需要识别用户,因此在这里使用用户 ID/用户名就足够了,除非它需要额外的用户信息来完成工作(可能是电子邮件地址)。在这种情况下复制数据是可以的,只要 Accounts 仍然是信息的所有者。

于 2011-02-21T09:40:01.890 回答
0

Ayende 在他的博客上为我很好地回答了这个问题:

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

于 2011-03-02T13:41:19.290 回答