问题现象
用户登录NC时出现invalid secrity token(null)报错。这时,按照常规解决办法,我们会先确认后账号密码无误,再重置一下令牌,重启,一般问题就能解决。然而当常规办法不奏效。
问题分析
常规方案不起作用,指定端口登录,日志级别设置成debug。
单独设置日志级别方式http://ip:端口,获取nclog,找到关键堆栈。
登录失败了,然后写登录失败的安全日志,而写安全日志需要token;但生成token又需要登录成功。这里的关键是登录失败的信息没有打印出来。
at nc.login.bs.impl.LoginEngine.recordLoginFailureLog(LoginEngine.java:384)
at nc.login.bs.impl.LoginEngine.dealWithLoginFailure(LoginEngine.java:286)
at nc.login.bs.impl.LoginEngine.login(LoginEngine.java:172)
at nc.login.bs.impl.NCLoginImplement.login(NCLoginImplement.java:70)
这里为了获取登录失败的关键信息,采用临时手段,直接改下配置,先看看登录失败的原因。
修改后需要重启集群,看到错误提示后,需要再修改回来,同样需要重启集群!!!
(请不要随意修改该配置!!重要!!!)
解决方案
通过上述排查与分析,我们核查到产生问题的原因是企业的账套日期到期导致,修改账套日期即可解决。