0

我编写了一个 OPC UA 客户端,我正在使用 ProSys OPC UA Simulator Server 对其进行测试。我的客户端以匿名模式运行,我可以浏览服务器。但是,当我将客户端配置为使用用户名和密码时,它会失败,并没有为可能的端点找到合适的 UserTokenPolicy。我已经对其进行了调试,似乎http://opcfoundation.org/UA/Se.....olicy#None不在端点 userIdentityTokens 数组中,尽管在 ProSys 中它声明它是。

我在 OPC UA Simulator 用户名和密码框中设置了一个用户 安全模式 = 无 安全策略 = 没有被勾选

服务器端点安全模式列表=无安全策略=无所以我希望在 userIdentityTokens 数组中看到它。

我的客户端是使用 Open62541 库编写的

任何帮助,将不胜感激。

谢谢

4

1 回答 1

0

我没有使用过 Open62541 库,但似乎该标准允许 OPC 服务器要求对用户名和密码进行加密,即使其余传输未签名或加密也是如此。

似乎在某个时间点(也许仍然如此),Open62541 不处理加密密码。以下是几个相关的 github 问题:

https://github.com/open62541/open62541/issues/934

https://github.com/open62541/open62541/issues/1548

https://github.com/open62541/open62541/issues/2757

我正在开发基于 node-opcua 库的 node.js OPC UA 客户端,并且我能够验证我可以连接到 ProSys OPC-UA 模拟服务器,并将安全模式设置为 none 并将用户身份验证设置为 username & 密码。我不知道 node-opcua 在幕后做了什么类型的密码加密,但它确实有效。

- - - 附加信息 - - - -

我发现另一个论坛有一些澄清:https ://forum.prosysopc.com/forum/opc-ua/clarification-on-opensecurechannel-messages-and-x509identitytoken-specifications/

关键部分:

如果发送密码,它们将按照 UserTokenPolicy 的定义进行加密(与 SecurityPolicy 不同,但类似)。在这种情况下,应用程序实例证书将用于加密——因此即使在 MessageSecurityMode=None 时也需要交换它们。

于 2020-10-09T16:16:40.140 回答