c# - AWS 环境中的 WCF UserNameTransport 错误 - 收到不安全或不正确安全的故障
问题描述
我有一个应该通过 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 证书来处理传入的请求消息?
请提供您的建议,以便在服务端正确接收安全凭证(用户名和密码)。
谢谢
解决方案
将证书安装到 EC2 实例 IIS 后,应用程序能够提取凭证。
推荐阅读
- angular - 动态组件在 ViewInit 后加载时不起作用
- javascript - 如何更正渲染页面 Laravel?
- jq - 使用带有时间字段的 jq 将 json 转换为 csv(格式化)并排序
- javascript - 如何忽略打字稿中的导入语句
- flask - 如何在谷歌云功能上使用烧瓶路由?
- mysql - 为什么即使我有满足我条件的数据,我也会在 oracle live 中收到“找不到数据”错误?
- if-statement - 如何使用 if 语句运行第二个函数 Google 脚本
- r - 为什么 simmer 的 get_attribute 函数需要环境作为参数?
- c# - 无法让元数据提取器运行
- python - 无法注册用户 - 类型错误:禁止直接分配到相关集的反面。改用 search.set()