WCF有一个丰富的安全模型,我希望每个人都可以就此给出一致意见。我最近遇到过这样一种情况:我们的客户端应用程序(利用域内用户凭据的基于WCF的应用程序)需要与我们必须部署到域和控制之外的数据中心的服务进行通信。因此,这打破了我们的单点登录模式,我想知道您是否有任何成功将安全模型扩展到域外的服务。
我们的身份模型依赖于IIdentity和IPrincipal类(不是WindowsIdentity / WindowsPrincipal),因此使用替代身份实现很好。正如我的问题所暗示的那样,我没有答案,我希望你这样做。我玩过的一个解决方案要求客户端以与现在相同的方式在我们的域中进行身份验证。作为身份验证的一部分,他们将获得由我们的CA签署的X.509证书(数据中心可信任)。证书将存放在证书存储区中(我相信有一个与.NET捆绑在一起,但我不清楚它是否能够在用户偶尔移动的环境中使用)并在请求时创建/提供给用户。
我很感激任何反馈和/或想法。
修改:
除远程数据中心外,我们还有仍然驻留在我们的数据中心内的服务。我想提供一个只需要一次登录的解决方案(而且fwiw,我们的用户每次启动此应用程序时都必须输入用户名和密码。)
答案 0 :(得分:0)
如果您在少数参与者之间有更多或更少的点对点请求,例如在B2B环境中,那么证书绝对是可行的方法。一切都是自动运作的 - 当然,一旦你正确设置了它! : - )
基本上,您的服务将拥有证书以进行身份验证,并且客户端还将拥有一个证书,该证书将发送到服务并根据服务对客户端进行身份验证。在服务器端,您可以使用ServiceSecurityContext.Current.PrimaryIdentity
访问来电者的IIdentity
。
有关详细信息,请参阅以下资源:
希望这有点帮助!
马克