0

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

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

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

服务应用

Wpf应用程序

MVCWeb应用程序

它们不存在于相同的域中,例如,服务应用程序将托管在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 透明地传输?

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

4

1 回答 1

0

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

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

MSDN 上有一本关于该主题的整本书。

于 2012-07-04T11:50:26.010 回答