如何在WCF服务中模拟用户而又不重新使用客户端应用程序中的用户凭据?

时间:2018-08-08 11:43:07

标签: wcf authentication impersonation

在以下情况下,我想向经验丰富的WCF开发人员提出有关如何在WCF服务中识别用户的问题:

1)有一个客户端应用程序(WPF),该应用程序使用登录名/密码向Active Directory验证用户 2)该应用与同一个网络内的WCF服务进行通信,并且原则上可以使用Windows凭据来验证用户。 3)WCF从SQL数据库(而不是从AD组)获取用户角色信息。 4)WCF应该对各种服务操作使用基于角色的授权,即仅允许特定用户执行操作。 5)具有传输安全性的net.tcp绑定将是首选绑定

我试图解决的安全相关问题很少,但是所有这些都归结为在上述情况下,对于实现针对服务器和客户端的安全解决方案的最佳实践的理解是什么?

到目前为止,我通过设置自定义IPrincipal对象在客户端应用程序中对用户进行身份验证,但是我没有找到将这种身份传递给WCF的方法。我可以使用TransportWithMessageCredential安全性在WCF中对用户进行身份验证,但是这需要在客户端应用程序中缓存用户登录名/密码,因此我不能在生产中使用此解决方案。

理想情况下,我想在客户端应用程序中对用户进行身份验证,缓存用户令牌,然后将其与对WCF的每个请求一起使用。我不确定该怎么做。另外,在服务器上实施基于角色的授权的安全方法是什么?

在否决该问题之前,请先提问。我进行了一些研究,但没有找到令人满意的即用型解决方案。在尝试发明新自行车之前,我想验证一下可用的选项,解决后将在此处发布完整的解决方案。谢谢。

0 个答案:

没有答案