【发布时间】:2018-10-05 20:31:34
【问题描述】:
我有一个使用 Windows 身份验证的 WCF 服务: 此服务可通过https://subdomain.mydomain.com/MyService.svc 获得 目前的配置是:
<netTcpBinding>
<binding name="SecureNetTcpBinding">
<security mode="Transport">
<transport clientCredentialType="Windows" />
<message clientCredentialType="Windows" />
</security>
</binding>
<netTcpBinding>
客户端使用 SPN 对服务器进行身份验证 (spn:MyService/subdomain.mydomain.com)。
当用户通过 VPN 连接到域时,身份验证工作正常。但是当VPN断开时,他无法连接:错误信息说找不到域控制器:
System.ServiceModel.Security.SecurityNegotiationException: A call to SSPI failed, see inner exception. ---> System.Security.Authentication.AuthenticationException: A call to SSPI failed, see inner exception. ---> System.ComponentModel.Win32Exception: The system cannot contact a domain controller to service the authentication request. Please try again later
那么有人可以告诉我是否有可能使这种情况成为可能吗?
更新 1: 我想要的场景是在浏览器中使用 windows 身份验证:浏览器发送 windows 身份验证,并且不需要与域控制器建立连接。它适用于 VPN 关闭。
【问题讨论】:
-
我相信这是一个网络问题,但这里有一个简短的提示——“不”。听起来该域只是一个“内部”域,并且网络/防火墙/基础设施不允许从本地网络外部连接到该域。您必须与您的网络团队合作探索替代方案。
-
编辑了我的问题:我想要的场景是在浏览器中使用 windows 身份验证:浏览器发送 windows 身份验证,并且不需要连接到域控制器。它适用于 VPN 关闭。
-
那种没有意义吧?您将如何向浏览器无法与之通信的域控制器进行身份验证?
-
因为笔记本电脑属于域-事件当前未连接到-并且服务器可以与域通信。对于网络应用程序,它已经在浏览器中开箱即用,所以我的问题只是想知道是否可以使用 WCF 来实现。这是一个 WCF 特定问题,而不是网络或体系结构问题。
标签: c# wcf windows-authentication wcf-binding nettcpbinding