对于我们的n层应用程序,我们正在寻找一种方法来使用从表示层到应用程序层的标识。我们的应用程序是一个经典的3层应用程序,具有以下层:
应用程序层未公开到Internet,表示层可以通过本地网络连接。我们的问题是用户登录到表示层,我们希望表示层通过用户身份传递给应用程序层。如何才能做到这一点?是否可以通过基于声明的身份验证执行此操作?我们目前正在寻求在STS服务中实现IWSTrust13SyncContract
,但似乎用户浏览器必须可以访问应用程序层。有人可以给我一些关于如何处理这个问题的建议。
答案 0 :(得分:2)
您可以使用模拟/委派或受信任子系统模型 - 请参阅http://msdn.microsoft.com/en-us/library/aa905320.aspx
模拟/委派最适合使用Windows身份验证,但即使这样,也可能要求您的Presentation Tier服务器受信任以进行委派。在此模型中,应用程序层对最终用户进行身份验证和授权。
使用更常见的受信任子系统模型:
有许多方法可以处理授权:
Presentation Tier通过Facade调用应用程序层。此Facade代表Applicaiton Tier完成所有必需的授权。
Presentation Tier将最终用户的身份传递给Application Tier。这可以是带内的(使用附加参数污染您的操作合同),也可以是带外的,例如在自定义SOAP标头中。如果使用SOAP标头,则可以使用行为客户端注入标头,使用WCF对应用程序代码透明,并使用服务器端处理标头。
无论是带内还是带外,您都信任Presentation Tier来验证它传递给Application层的身份。因此,对表示层进行身份验证非常重要,并且根据您的环境来防止中间人攻击(例如,中间人攻击)。使用HTTPS。
答案 1 :(得分:1)
您的演示层将使用某种形式的基于声明的身份验证(被动/主动)。一旦发出令牌,您应该使用通道上的ActAs或OnBehalf将身份联系到您的中间(应用程序)层的堆栈中的n级服务。如果您需要样品,请告诉我。
答案 2 :(得分:0)
创建一个类似于用户身份的类,并在您的表示层中设置值 并将此calss的引用传递给您的应用程序层。