问题描述
我已经编写了OPC UA客户端,并且正在使用ProSys OPC UA Simulator Server对其进行测试。在匿名模式下运行,我的客户端已连接,我可以浏览服务器。但是,当我将客户端配置为使用用户名和密码时,它将失败,并且未为可能的端点找到合适的UserTokenPolicy。我已经调试了它,看来http://opcfoundation.org/UA/Se…..olicy#None不在端点userIdentityTokens数组中,尽管在ProSys中它指出了它。
在“ OPC UA模拟器用户名和密码”框中打勾的我已设置用户 安全模式=无 安全策略=未勾选
服务器端点列表 安全模式=无 安全策略=无 所以我希望可以在userIdentityTokens数组中看到它。
我的客户端是使用open62541库编写的
任何帮助将不胜感激。
谢谢
解决方法
我还没有使用过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客户端上进行工作,并且能够验证是否可以将安全模式设置为none并通过用户身份验证连接到ProSys OPC-UA仿真服务器。设置为用户名和密码。我不知道幕后在做哪种类型的密码加密node-opcua,但是可以。
-----其他信息-------
关键部分:
如果发送密码,则密码将按照 UserTokenPolicy(与SecurityPolicy分开,但相似)。 应用实例证书将用于加密 在这种情况下,因此甚至需要交换 当MessageSecurityMode = None时。