无法从C#

时间:2017-02-18 12:33:27

标签: c# .net sql-server wcf authentication

我正在使用

  1. WCF服务(Windows身份验证和模拟)
  2. SQL Server(Windows身份验证)
  3. 控制台应用程序(客户端)
  4. 所有人都在同一个域中。

    我从控制台应用程序中使用Windows身份验证的WCF服务作为客户端。但是,当我尝试使用WCF服务从控制台应用程序访问SQL Server时,出现错误:

      

    用户“NT AUTHORITY \ ANONYMOUS LOGON'”帐户登录失败。

    我的方案是:我的WCF服务和SQL Server在一个系统(System A)上,而我的控制台应用程序(我的客户端)在另一个系统上(System B)。

    当我的System B客户端发送请求时,它会成功点击我的服务,但当服务尝试访问SQL Server时

2 个答案:

答案 0 :(得分:1)

  
      
  • WCF服务(Windows身份验证和模拟)
  •   
  • Sql server(Windows身份验证)
  •   
  • 控制台应用程序(客户端)
  •   

此方案需要Kerberos constrained delegation。您不能这样做,您必须寻求域管理员的帮助才能为您设置它。阅读并关注How to Implement Kerberos Constrained Delegation with SQL Server

请注意,模拟和委派会将原始客户端(控制台应用程序)的凭据传递到后端数据库,这意味着您需要向服务的实际用户授予SQL访问权限,而不是授予WCF服务帐户。

答案 1 :(得分:0)

我认为您与WCF服务的连接没有问题,但SQL Server自己的安全系统将客户端视为超出安全屏障的用户(如防火墙),因为客户端实际上来自外部,而不是机器的管理员。

为什么不应用SQL身份验证模式和WCF的Web.Config非对称加密的常见想法?

如果您必须面对客户端从外部连接到服务器的情况,强烈建议使用加密(安全性)。

我在客户端有桌面应用程序(WPF),在云服务上有WCF服务连接到Cloud SQL Server。

相关问题