如何使用NTLM使用WCF Web服务对控制台应用程序进行身份验证?

如何使用NTLM使用WCF Web服务对控制台应用程序进行身份验证?,第1张

概述我有一个WCF Web服务使用basicHttpBinding与IIS 7上托管的NTLM(禁用匿名身份验证并启用 Windows身份验证). AppPool使用传递身份验证.我有一个远程连接到Web服务的控制台应用程序. 如果我使用我的域用户连接,则该过程成功连接.如果我使用在域上创建的新服务帐户进行连接,则会收到以下错误: The HTTP request is unauthorized wi 我有一个WCF Web服务使用basichttpBinding与IIS 7上托管的NTLM(禁用匿名身份验证并启用 Windows身份验证). AppPool使用传递身份验证.我有一个远程连接到Web服务的控制台应用程序.

如果我使用我的域用户连接,则该过程成功连接.如果我使用在域上创建的新服务帐户进行连接,则会收到以下错误:

The http request is unauthorized with clIEnt authentication scheme
‘Ntlm’. The authentication header received from the server was ‘NTLM’.

内在的例外是:

The Remote Server returned an error: (401) Unauthorized.

这是域帐户或我的身份验证方案的问题吗?错误消息表明它是身份验证方案,但为什么它在我的帐户下工作而不是在同一域上创建的服务帐户?

服务器配置

<security mode="TransportCredentialOnly">    <transport clIEntCredentialType="Ntlm" proxyCredentialType="None" realm="" /></security>

客户消费

public static WMServiceClIEnt CreateWMServiceProxy(){    var proxy = new WMServiceClIEnt();    proxy.Endpoint.Address = new EndpointAddress( ConfigurationCache.WMServiceEndpoint );    proxy.Endpoint.Binding = new BasichttpBinding( BasichttpSecurityMode.TransportCredentialOnly )    {        MaxBufferSize = 2147483647,MaxReceivedMessageSize = 2147483647    };    ( (BasichttpBinding) proxy.Endpoint.Binding ).Security.Transport.ClIEntCredentialType = httpClIEntCredentialType.Ntlm;    return proxy;}
解决方法 解决方案:这实际上并不像我最初想的那样是WCF错误.当我记录内部异常时,我发现我收到了“401 – 未经授权”的错误.原来我创建的服务帐户没有获得对服务主机的远程连接访问权限.一旦我们授予访问权限并以用户身份添加服务帐户,该过程就会正确连接. 总结

以上是内存溢出为你收集整理的如何使用NTLM使用WCF Web服务对控制台应用程序进行身份验证?全部内容,希望文章能够帮你解决如何使用NTLM使用WCF Web服务对控制台应用程序进行身份验证?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1054277.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存