0

当前的 2 层应用程序

ASP.NET(成员/角色)– BL – DAL – DB

在用户通过身份验证(成员资格)后,我们使用角色来促进对不同菜单项的授权,例如“报告”和“管理”。然而,作为授权的一部分,我们还必须考虑响应过滤。例如,无论用户的角色如何,通过 id 检索语句的方法应该限制为用户只能通过某些已建立的数据库关系检索属于他们的语句。为了促进这一点,Web 应用程序在会话中维护一个配置文件 (POCO),该配置文件被注入到每个 BL 对象中(也许这个对象应该被合并到IIdentity)。随后在 BL 中,我们能够确定对 id X 的请求是否确实应该返回一个语句,因为我们知道请求该语句的用户,并且我们知道该语句与应该能够访问它的用户之间的关系.

未来的三层应用

ASP.NET(成员/角色)- WCF - BL - DAL - DB

身份验证似乎保持不变,WCF 服务可以使用密码保护,以确保只有我们的 Web 应用程序(或任何其他具有用户/密码的应用程序)可以访问它。但是,我该如何促进响应过滤?是否有将 ASP.NET 的IPrincipal/传递IIdentity给服务的无缝机制?如果是的话,如果我有一个非 ASP.NET 客户端到同一服务,这将如何限制我?如果不是,此信息应该是请求 dto 或请求标头的一部分吗?

4

2 回答 2

0

回覆:

是否有无缝机制将 ASP.NET 的 IPrincipal/IIdentity 传递给服务?

您可以查看 WS-Trust :weblogs.asp.net/cibrax/archive/2006/09/08/SAML-2D00-STS-implementation-for-WCF.aspx

于 2013-01-17T15:08:45.337 回答
0

您可以将 XACML 应用于您的 3 层应用程序。您将在小部件(菜单、按钮...)、业务逻辑和 WCF 层中获得授权。

所有请求都将违反 XACML 外部编写的相同授权策略。你的规则可以说:

  • 管理员可以查看管理按钮
  • 用户可以查看他们拥有的语句(即用户可以查看语句 if statement.owner==user.id)

您不再需要实现数据库关系。您的授权变得容易得多。

高温高压

于 2013-01-17T15:07:03.657 回答