需要有关ASP.NET + WCF +安全性的建议和帮助

时间:2010-07-05 20:38:28

标签: asp.net wcf security

我想收到关于我正在尝试构建一个asp.net Web应用程序的方式的评论,该应用程序使用托管在另一个asp.net应用程序中的WCF服务。两个应用程序都将位于同一台计算机上,但无法从外部访问具有WCF服务的应用程序。将有两个Web服务器共享负载均衡器后面的负载。

两个应用程序的应用程序池将使用相同的本地用户帐户(Web服务器不属于域),所以我想将WsHttpBinding与windows安全性一起用于客户端和内部wcf服务之间的通信。

fron-end asp.net应用程序通过自定义成员资格/角色提供程序使用表单身份验证来对用户进行身份验证和授权。用户数据库位于sql server数据库中。

我需要以某种方式向wcf服务传递用户详细信息(用户名+角色),以便在wcf中可以根据谁登录前端的角色进行验证和授权。我读过我需要使用“支持令牌”,但我还没弄清楚如何使用它。

我还阅读了一些关于声明和WIF的内容,这看起来很有趣但不知道如何在我的场景中使用它们。

是否有人可以向我提供有关架构的建议,也可以告诉我如何将用户名传递给wcf服务,并告诉我是否可以使用基于声明的授权?

1 个答案:

答案 0 :(得分:1)

首先,如果两台服务器都在企业局域网的公司防火墙后面,我强烈建议使用netTcpBinding而不是任何基于http的绑定。由于以二进制格式对消息进行编码,NetTcpBinding要快得多。

至于用户名/密码:您的ASP.NET前端服务器可以为调用WCF服务的用户设置客户端凭据 - 毕竟,ASP.NET服务器可以访问ASP.NET成员资格数据库,不是吗?

或者,如果您无法传递用户的凭据,您可以将一些标头传递给描述用户的WCF服务 - 实际上,您可能只需要用户的唯一ID - 因为WCF服务可能会消除其余的如果真的需要,再次从ASP.NET用户数据库获取信息。

至于索赔 - 我不认为他们在这里是个好主意 - 你真的不需要处理多种不同的授权方案,而且你没有使用任何联合(例如允许用户来自一个不同的公司或域名来使用您的服务) - 所以这些明显的好处可能不适用于您的案例。