gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:33:08 27 4
gpt4 key购买 nike

我有一个 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 - 未经授权”错误。原来我创建的服务帐户没有被授予对服务主机的远程连接访问权限。一旦我们授予访问权限并将服务帐户添加为用户,该进程就会正确连接。

关于wcf - 如何使用 NTLM 通过 WCF Web 服务对控制台应用程序进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10322442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com