使用node-opcua连接OPC UA服务器遇身份令牌被拒问题求助
解决node-opcua客户端匿名模式下BadIdentityTokenRejected错误的方案
我之前也碰到过类似的问题,给你几个实用的排查和解决方向:
确认客户端身份令牌配置正确
即使服务器开启了匿名模式,客户端如果没正确设置匿名令牌也会被拒绝。检查你的代码里是否明确指定了AnonymousIdentityToken,示例代码如下:const userIdentityToken = { type: "Anonymous", policyId: "Anonymous" }; // 在创建会话时传入这个令牌 const session = await client.createSession(userIdentityToken);另外注意
policyId要和服务器端配置的匿名策略ID保持一致,大部分服务器默认是Anonymous,但如果服务器有自定义配置就得对应修改。检查服务器匿名权限设置
服务器开启匿名模式不代表自动允许匿名用户创建会话,有些OPC UA服务器默认会限制匿名用户的操作权限。你需要登录服务器管理界面,确认匿名用户被授予了创建会话的权限,同时检查是否有其他安全策略阻止了匿名访问。用测试工具验证服务器端点
先抛开node-opcua客户端,用专业的OPC UA测试工具尝试以匿名方式连接服务器。如果测试工具也连不上,那问题大概率出在服务器配置上;如果测试工具能正常连接,再回头排查客户端代码的问题。查看服务器详细日志
很多OPC UA服务器会在日志里记录身份令牌被拒绝的具体原因,比如“匿名用户无会话创建权限”或者“端点安全策略不匹配”。去服务器的日志目录里找找相关条目,这能帮你快速定位核心问题。排查客户端版本兼容性
偶尔会因为node-opcua客户端和服务器的OPC UA规范版本不兼容导致此类错误。建议把node-opcua升级到最新稳定版,或者确认服务器支持的OPC UA版本,确保客户端和服务器的版本匹配。
内容的提问来源于stack exchange,提问作者farminf
相关产品推荐
相关产品推荐

