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) 环境中的某些拦截器丢弃