我正在使用
所有人都在同一个域中。
我从控制台应用程序中使用Windows身份验证的WCF服务作为客户端。但是,当我尝试使用WCF服务从控制台应用程序访问SQL Server时,出现错误:
用户“NT AUTHORITY \ ANONYMOUS LOGON'”帐户登录失败。
我的方案是:我的WCF服务和SQL Server在一个系统(System A
)上,而我的控制台应用程序(我的客户端)在另一个系统上(System B
)。
当我的System B
客户端发送请求时,它会成功点击我的服务,但当服务尝试访问SQL Server时
答案 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。