允许外部用户与内部服务进行通信

时间:2015-07-20 20:01:29

标签: windows wcf authentication ssl active-directory

我遇到的问题是,内部用户可以访问经常在我们内部网络之外旅行的用户的信息。

现在的工作方式是我们有一个程序访问WCF服务,该服务托管在面向公众的安全网站上。当用户使用我们的内部网络时,该服务正常。但是,一旦用户离开网络(比如去酒店),他们就会得到401:不是授权错误。

有时会出现以下根本原因

  1. 请求未经授权使用客户端身份验证方案“匿名”。收到的标题是'NTLM,Negotiate'
  2. 系统无法联系域控制器以提供身份验证请求
  3. 此工作站与主域之间的信任关系失败。
  4. 有一种解决方法,我并不太兴奋,它是手动将凭据(域/用户名和密码)添加到Windows凭据管理器,直到凭据被清除然后进程再次开始。发生这种情况时,用户可以在浏览器中导航到服务并在程序中成功使用它们。

    这是我们用于WCF服务的绑定

         <basicHttpBinding>
        <binding name="secureHttpBinding" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647">
    
          <security mode="Transport">
    
            <transport clientCredentialType="Windows" />
    
          </security>
    
        </binding>
      </basicHttpBinding>
    

    根据Windows Credential Manager修复程序,我们应该能够使用Users Active Directory帐户来管理此服务的身份验证。

    我只是想知道是否有可能部署一项服务,允许远程用户访问,因为他们已经成功登录了我们域名的帐户。

1 个答案:

答案 0 :(得分:0)

将内部端点直接暴露给外界并不是一个好习惯。您始终使用外部总线,因此您无需打开任何防火墙端口。例如,您可以更好地使用Azure Service Bus,它更安全可靠,然后允许直接连接到您的内部网络。

将本地应用程序连接到云

Service Bus Relay通过允许本地Web服务投影公共端点,解决了本地应用程序与外部世界之间进行通信的挑战。然后,系统可以访问这些Web服务,这些服务继续在地球上的任何地方运行。

http://azure.microsoft.com/en-us/services/service-bus/

相关问题