WCF:服务器在从WindowsService调用时拒绝凭据

时间:2017-05-16 15:05:21

标签: wcf windows-services credentials impersonation

我有一个WCF服务使用NetTcpBinding与某些Form应用程序交互以使用Callbacks。它运作得很好。

现在,我想在LocalService帐户下运行的WindowsService中使用相同的WCF服务。这样做的目的是输入一些将在表格中显示的数据。我只需要使用其中一个函数,我们称之为“PushInfo(data as MyData)

据我所知,我无法使用LocalService帐户执行此操作,因此我将其设置为使用某些AD凭据:

myclientWCF = New ServiceReference.GatewayClient(context)
myclientWCF.ClientCredentials.Windows.ClientCredential.UserName = "John"
myclientWCF.ClientCredentials.Windows.ClientCredential.Domain = "EvilCorpDomain"
myclientWCF.ClientCredentials.Windows.ClientCredential.Password = "spaceballs"
myclientWCF.PushInfo(myData)

如果我这样做,由于凭据无效,服务器会拒绝该呼叫。

我错过了什么?

我读过我应该使用:

myclientWCF.ClientCredentials.Windows.ClientCredential = New NetworkCredential("John", "spaceballs", "EvilCorpDomain")

但是我得到了相同的结果,实际上我看不出这与我的方法有什么不同。

2 个答案:

答案 0 :(得分:0)

尝试添加myclientWCF.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonate;

答案 1 :(得分:0)

好吧,看起来我错过了这句话:

myclientWCF.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials

虽然我不确定它是如何工作的。我会调查一下。

我一整天都在努力工作,在发布问题10分钟后我就开始工作了。离开这里问题和答案是否是一个好习惯,还是应该删除帖子?