2014-10-08 44 views
1

对于我们的n层应用程序,我们正在寻找一种方法来使用表示层到应用层的标识。我们的应用程序是一个典型的3层应用程序具有以下层级:将用户标识从表示层带到应用层

  • UI - 表示层
  • 应用/ WCF层
  • 数据库层

应用层不被暴露到互联网并且表示层可以通过本地网络连接。我们的问题是用户登录到表示层,我们希望表示层通过用户标识传递到应用程序层。如何才能做到这一点?有可能通过基于声明的身份验证来做到这一点吗?我们目前正在考虑在STS服务中实现IWSTrust13SyncContract,但似乎应用层必须可以通过用户浏览器访问。有人可以给我一些关于如何解决这个问题的建议。

回答

0

创建一个类似于用户标识的类并在您的表示层中设置值。
,并将此规范的参考传递给您的应用程序层。

+0

如果我只是将我的调用中的ClaimsIdentity类传递给应用层,那么任何有权访问应用层网络的人都可以这样做。没有证据表明层已创建了沿应用层调用传递的ClaimsIdentity。 – 2014-10-08 13:41:13

2

您可以使用模拟/委派或信任的子系统模型 - 见http://msdn.microsoft.com/en-us/library/aa905320.aspx

模拟/委派最适合运行Windows身份验证,但即使如此,可能需要将您的服务器层为委派信任。在此模型中,应用层对最终用户进行身份验证和授权。

随着更常见的受信任子系统模型:

  • 表示层认证终端用户
  • 应用程序层将通常要以认证表示层,例如使用Windows身份验证,并只接受来自运行演示层的服务帐户的请求,或者接受来自其他身份验证方法使用客户端证书,只接受来自特定IP地址的请求,...
  • 应用层的信任表示层授权最终用户

有许多的方式来处理权限:

  • 表示层通过Facade调用应用层。该Facade代表应用程序层进行所有授权。

  • 表示层将最终用户的身份传递给应用层。这可以是带内的(污染您的运营合同并附加一个参数),或者可以是带外的,例如,在自定义SOAP头中。如果您使用SOAP标头,则可以通过使用行为客户端注入标头以及服务器端来处理标头,使用WCF对您的应用程序代码透明化。

    无论是带内还是带外,您都信任Presentation Tier对其传递给应用程序层的身份进行身份验证。因此,认证Presentation Tier非常重要,并根据您的环境来防范中间人攻击,例如,通过使用HTTPS。

+0

尽管我们更喜欢使用基于声明的身份验证的解决方案,但此解决方案仍在我的简要列表中。我们的表示层对STS有信任,我们的首选是重用令牌与应用层进行通信。我们无法弄清楚如何。 – 2014-10-08 13:38:56

1

您的演示文稿层将使用某种形式的基于声明的身份验证(被动/主动)。一旦发布令牌,您应该使用渠道上的ActAs或OnBehalf将您的n级服务下的标识联合到中间(应用程序)层的堆栈中。让我知道你是否需要样品。

+0

我仍在努力,因此欢迎举一个例子。 – 2014-10-30 08:27:16