跨多个项目保护WCF服务

时间:2012-07-03 20:27:40

标签: wcf architecture wcf-security

我很难绕过一些架构元素来保护许多不同应用程序所使用的核心WCF服务。

在内部,我们有一个应用程序,允许HR人员更新peron的详细信息。这包含在WPF应用程序中。在外部,我们有一个网站,允许个人进行身份验证(通过AD会员提供商)并更新其详细信息。

我们不希望用户能够看到其他用户的信息(出于显而易见的原因)。但我们不希望在用户登录的同一Web应用程序中托管此服务。以下是从视觉工作室角度看架构的外观:

ServiceApplication

WpfApplication

MVCWebApplication

它们不存在于同一个域中,例如,服务应用程序将托管在http://www.service1.com/Service.svc,mvc应用程序将托管在http://www.updateyourprofile.com。因此,用户登录http://www.updateyourprofile.com,我们想通过JSON点击Wcf服务。服务应用程序,wpf应用程序和mvc Web应用程序都将使用AD凭据进行身份验证。但是,我们如何保护服务,以便登录mvc Web应用程序的用户只能看到他们的信息?

我看到的大多数示例都说要在服务中使用HttpContext.Current.User检查。但是,由于用户在其他站点进行了身份验证,因此cookie如何传输?您最终是否必须在要使用的同一Web应用程序中发布服务,以便cookie透明地传播?

或者是否不可能拥有一个位于中心位置的服务,这些服务使用不同的应用程序来使用相同的身份验证存储来确定谁有权访问服务上的内容?

1 个答案:

答案 0 :(得分:0)

您正在寻找的是某种联邦身份验证系统,所有入口点都使用该系统。这就是Windows Identity Foundation可以帮助您构建的。

根据认证系统发布的每个用户安全令牌中嵌入的声明,在每个应用程序内部,访问控制将基于声明。

There's an entire book on the subject on MSDN.

相关问题