来自asp.net的wcf授权(请求过滤)表示auth客户端

时间:2013-01-14 15:51:10

标签: asp.net wcf authorization wcf-security

目前的2层申请

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

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

未来的3层申请

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

HTH

答案 1 :(得分:0)

回复:

  

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

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