You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpcUA驱动代码调用OpenAsync报错:用户身份令牌无效求助

解决OpcUA无身份令牌登录时的"The user identity token is not valid"错误

当安全策略设为None且采用无用户名密码登录时,出现该错误通常是客户端未正确传递空/匿名身份令牌,或配置与服务端不匹配导致的,可按以下步骤排查修复:

  • 显式配置匿名身份令牌
    使用Workstation.ServiceModel.Ua时,需明确创建AnonymousIdentityToken并绑定到会话参数,避免SDK默认生成不兼容的令牌:

    // 初始化匿名身份令牌
    var anonymousIdentity = new AnonymousIdentityToken();
    
    // 配置会话参数,指定安全策略为None
    var sessionParams = new SessionParameters
    {
        EndpointUrl = "opc.tcp://your-server-address:port/your-endpoint",
        SecurityPolicyUri = SecurityPolicies.None,
        Identity = anonymousIdentity
    };
    
    // 创建会话通道时传入正确参数
    this._channel = new SessionChannel(sessionParams);
    
  • 确认服务端匿名访问权限
    尽管UaExpert能正常连接,仍需检查服务端配置是否明确开启了匿名登录权限,部分OpcUA服务器需要手动启用匿名用户组或身份验证规则。

  • 匹配正确的Endpoint
    确保客户端连接的是SecurityPolicy=None的Endpoint,部分服务端会提供多个安全等级不同的Endpoint,可通过代码筛选验证:

    var discoveryClient = new DiscoveryClient("opc.tcp://your-server-address:port/discovery");
    var endpoints = await discoveryClient.GetEndpointsAsync();
    
    // 筛选安全策略为None的Endpoint
    var targetEndpoint = endpoints.FirstOrDefault(e => e.SecurityPolicyUri == SecurityPolicies.None);
    if (targetEndpoint != null)
    {
        sessionParams.EndpointUrl = targetEndpoint.EndpointUrl;
    }
    
  • 排查SDK版本问题
    Workstation.ServiceModel.Ua部分旧版本存在匿名令牌处理的兼容性bug,尝试升级到最新稳定版,或查看SDK官方文档确认是否有相关修复说明。

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:52:14