AWS 环境中的 WCF UserNameTransport 错误 - 收到不安全或不正确安全的故障

Posted

技术标签:

【中文标题】AWS 环境中的 WCF UserNameTransport 错误 - 收到不安全或不正确安全的故障【英文标题】:WCF UserNameTransport Error in AWS environment- An unsecured or incorrectly secured fault was received 【发布时间】:2019-05-23 08:39:06 【问题描述】:

我有一个应该通过 SSL 工作的 WCF 应用程序。在我的本地机器上使用自签名证书配置 SSL,它工作正常。

当我将应用程序移动到 AWS EC2 实例时出现以下错误。

例外:

从另一方收到不安全或不正确安全的故障。有关代码和详细信息,请参阅内部 FaultException。

异常,检查tracelog.svclog后:

安全处理器无法在邮件中找到安全标头。这可能是因为消息是不安全的错误,或者是因为通信双方之间存在绑定不匹配。如果为安全配置了服务并且客户端未使用安全,则可能会发生这种情况。

用于此应用程序的绑定,

<customBinding>
    <binding name="httpBasic" receiveTimeout="00:10:00" sendTimeout="00:10:00">
        <security authenticationMode="UserNameOverTransport" >
        </security>
        <textMessageEncoding  messageVersion="Soap11"/>  
        <httpsTransport maxReceivedMessageSize="2147483647" 
              keepAliveEnabled="false" transferMode="Streamed"/>
    </binding>
</customBinding>

AWS 环境:

EC2 实例是 Windows 10 机器,位于经典负载均衡器后面,负载均衡器是使用 Route 53 配置的 SSL。

EC2 实例不是图形用户界面。它只能访问 DOS 命令提示符。

通过更新配置文件 (%WinDir%\System32\Inetsrv\Config\applicationHost.config) 在 EC2 实例 IIS 中配置 SSL,如下所示:

<site
   <bindings>
      <binding protocol="https" bindingInformation="*:443:" />
   </bindings>
</site>

到目前为止尝试了以下更改,绑定两端都相同。

includeTimestamp - false
enableUnsecuredResponse- true
maxClockSkew-10:00:00

在绑定安全中更改这些内容后,我没有看到“不安全或安全错误”错误。但是,用户名在服务端没有收到。

我已经通过记录用户名验证了这一点。

证书未在 EC2 实例 IIS 中配置,因为证书已在负载均衡器中配置。我们是否需要 IIS 证书来处理传入的请求消息?

请提供您的建议,以便在服务端正确接收安全凭证(用户名和密码)。

谢谢

【问题讨论】:

我对负载均衡器不熟悉,由于服务器使用httpstransport绑定元素,因此尝试在服务器端设置证书是个好主意。 能否在web config的服务行为中使用SercurityAudit节点将其登录到服务器端?负载均衡器很可能仍在将 HTTPS 传递给 IIS,因此您可能必须在 IIS 中使用带有私钥证书的 https。 谢谢阿巴拉欣。我们正计划添加证书。 谢谢波波。添加 SecurityAudit 元素后,我收到“消息身份验证成功”。在本地机器上。但是,ec2 实例服务器中没有记录任何消息。 【参考方案1】:

将证书安装到 EC2 实例 IIS 后,应用程序能够提取凭据。

【讨论】:

以上是关于AWS 环境中的 WCF UserNameTransport 错误 - 收到不安全或不正确安全的故障的主要内容,如果未能解决你的问题,请参考以下文章

将 WCF 与负载平衡 (AWS) 一起使用时,安全上下文令牌无效

在 .NET WCF 服务部署上选择 Azure 或 AWS [关闭]

在 Web 场环境中使用共享缓存来检测 WCF 中的重放攻击

ASP.Net WCF 服务的 Thread.CurrentPrincipal 被联邦 (WIF) 环境中的某些拦截器丢弃

在 .net core 项目中按环境加载 WCF 服务

如何处理 AWS 中的开发和生产环境? [关闭]