使用消息安全性和客户端凭据类型“Windows”在Docker容器中的WCF

时间:2018-05-28 14:09:42

标签: c# .net windows wcf docker

我正在尝试使用安全模式message和客户端凭据类型Windows的绑定在docker容器中运行WCF服务。类似的东西:

...
<bindings>
  <wsHttpBinding>
    <binding name="wsHttpBinding_IService1">
      <security mode="Message">
        <message clientCredentialType="Windows"/>
      </security>
    </binding>   
  </wsHttpBinding>
</bindings>
...

我已经成功创建并启动了容器,感谢gMSA和发现here的教程,我可以在容器内的服务中使用Windows身份验证对SQL Server 2016发出SQL命令。

到目前为止一切顺利,但是当在Docker主机上运行客户端连接到容器内的服务时,我收到了错误消息:

System.ServiceModel.Security.SecurityNegotiationException: 
The server has rejected the client credentials

据我所知,这种情况正在发生,因为docker容器正在使用其主机名(在使用docker exec检查后,似乎是某些哈希值)要求域控制器提供有效凭据。由于容器不是域的一部分(即使它认为是由于gMSA),域控制器拒绝该请求,并且客户端收到上述消息。

所以我的问题是:这真的发生了什么,还是我错过了什么?有没有办法让Windows身份验证与上面的绑定一起工作,或者我的方法在概念上有缺陷?也许还有另一种方法可以在Docker中使用WCF进行Windows身份验证吗?

除了没有收到任何答案的this one之外,我找不到关于我的问题的任何线索。所以任何帮助都会非常感激。

0 个答案:

没有答案