您的位置:首页 > 其它

关于WCF的“调用方未由服务进行身份验证”的另一解决方法

2011-12-16 15:52 375 查看
今天在远程服务器上部署WCF服务,遇到了一个问题:“调用方未由服务进行身份验证”,一直不得其法,在网上搜了一遍,发现原来有很多朋友也遇到了这个问题。

几乎每位网友都贴着同一个解决方案,就是把安全模式改为None,但几乎每位网友都说解决不了。我按照网上所说的方法试了半天,也没调成功。

在最烦燥的时候,人总应该冷静下来,去思考问题,我决定自行研究,寻找另外一条解决途径。

观察着服务端和客户端的配置,服务端用的是<security mode="None">,客户端用的是<security mode="Message">,这种搭配是VS自动生成的,在本地调试时是成功的,换句话说,身份验证是可以从客户端传递到服务端的,要不然,MS就真得是拿起石头砸自己的脚了。既然如此,问题产生的原因就只有两个,一是客户端的验证信息没有成功传递到指定服务端,二是客户端的验证信息无法被服务端识别。

首先尝试着第一种原因,把所有涉及远程服务地址的信息全部换成显式地址,包括服务端配置文件中的DNS,可以明确传递目标是准备无误的,但结果还是失败了。

第二种原因,首先想到的就是客户端的本地凭证传递到服务端,但没有被正确识别。尝试着将WCF的权限扩展,将NETWORK SERVICE和IUSER添加进去,但仍没成功。

还有什么原因呢,突然间想到一个奇怪的想法,既然NETWORK SERVICE已经加进去了,按道理客户端的信息应该可以被服务端所获取,除非服务端根本没有不知道发送请求的客户端是谁。此时,想起SQL SERVER访问Windows Server 2003的低级版本时,总是需要先登录到服务端的共享文件夹。

感觉到了曙光,按照想法,我先登录到服务端的共享文件夹,然后再启动调试,结果成功了

总结下,其实问题的产生未必很复杂,可能只是某一小环节没有处理,或忽略了。在此,分享出经验,也希望各位遇到相同问题的网友,能够顺利解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: