我正在尝试使用用户名/密码身份验证向OPC UA Simulation Server进行身份验证,但是我收到以下 Bad_SecurityChecksFailed 例外。这是我第一次使用OPC UA,而且我以前没有使用它的经验。也许有人已经遇到了同样的问题,并且可以帮助我。
在我正在使用的模拟服务器(Prosys OPC UA)上,显示证书被拒绝:
该模块正在使用OPCFoundation.NetStandard.Opc.Ua nuget包(https://github.com/OPCFoundation/UA-.NETStandard)。
这是 UserIdentity 变量的数据:
可以看出,IssuedTokenType和PolicyId为null,这可能是问题的一部分,但是我找不到如何初始化它们。
这是 ConfiguredEndpoint 数据:
以下是使用用户名和密码在服务器上创建会话的代码:
在创建会话时,它会抛出AggregateException并带有上述 Bad_SecurityChecksFailed 异常。
这些是在模拟服务器上设置的端点和用户:
我为尝试解决该问题做了什么?
我搜索了C#示例,但没有找到想要的东西。
我发现唯一拥有C#示例的地方是来自Github(https://github.com/OPCFoundation/UA-.NETStandard)上的“ UA Quickstart应用程序”,如果我正确理解的话,它将使用带有用户名和密码的证书。我对证书没有任何经验,也无法理解身份验证的工作原理以及实现方法。
我也在看另一个问题的答案:https://stackoverflow.com/a/46458799/8399585,它提供了有关策略和客户端证书的一些信息,还提到了我收到的错误。但这并未显示应如何配置(实际上,这并不是问题的初衷)。
答案 0 :(得分:0)
您的服务器返回Bad_SecurityChecksFailed,因为服务器不信任客户端证书。您可以在服务器日志中看到此消息,其中在“未接受远程证书”消息之前显示“将xxx证书添加到拒绝的证书”。我对Prosys不熟悉,但是希望“证书”选项卡使您能够以某种方式信任客户端证书。