Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nacos2.0.4 开启鉴权后 所有账号更改密码报错 #8107

Closed
Master-Jack opened this issue Apr 8, 2022 · 10 comments · Fixed by #8114
Closed

nacos2.0.4 开启鉴权后 所有账号更改密码报错 #8107

Master-Jack opened this issue Apr 8, 2022 · 10 comments · Fixed by #8114

Comments

@Master-Jack
Copy link

image

@Master-Jack
Copy link
Author

2.0.3的版本 revision 为啥是 2.1.0-SNAPSHOT

@onewe
Copy link
Collaborator

onewe commented Apr 8, 2022

如何复现这个问题呢? 是先创建用户紧接着修改密码吗?

@Master-Jack
Copy link
Author

复现步骤:把2.0.4的拉下来开启鉴权:nacos.core.auth.system.type=nacos 运行。
修改密码就会报错,不管是那个账号。
这个是UserController #updateUser方法获取requestattribute 的 nacosuser值为空导致。还没return,继续往下执行。结果就是报错,密码也改了。

@onewe
Copy link
Collaborator

onewe commented Apr 8, 2022

@i will resolve it@

@onewe
Copy link
Collaborator

onewe commented Apr 11, 2022

方案一:
当后端返回401时,前端跳转到首页重新登录

方案二:
当后端解析token成功时,把NacosUser对象放入session

@dixonqin
Copy link

我这边遇到了相同的问题,线上nacos升级2.0.4之后出现不能修改密码的问题,重新登录也不太行。本来本地测试集群也是有这个问题的,但是为了开启远程debug,修改yaml添加了一个环境变量之后,本地测试集群这个问题就没了,目前不知道具体成因是啥,只能大致猜测是NACOS_USER_KEY的Attribute拿不到导致的。
我的思路是将修改密码拆成两个接口,一个是global admin使用的,跟删除用户放到同一级下,用security保护;一个是修改自己账号密码用的,只需要校验是否是当前用户就行。这样就不需要使用hasPermission这个分支了,数据都可以从jwt中拿现成的。

@onewe
Copy link
Collaborator

onewe commented Apr 12, 2022

@dixonqin 你的这问题 还有点不一样, 能提供复现的步骤吗??

onewe added a commit to onewe/nacos that referenced this issue Apr 13, 2022
@dixonqin
Copy link

@dixonqin 你的这问题 还有点不一样, 能提供复现的步骤吗??

我现在也懵,不知道咋复现,这两天试着重新上线了好几次也没遇到这个问题;目前是保险起见把修改密码接口拆分了,global admin用一个,修改自己密码用一个,这样就不需要判断is global admin这个字段了,信息都直接从jwt取,跳过了获取attribute的步骤

@dixonqin
Copy link

@dixonqin 你的这问题 还有点不一样, 能提供复现的步骤吗??

我这边是在2.0.x基础上做了一定的魔改,新增了一套oidc流的auth,跟nacos user做了个映射,为了兼容升级,原始的nacos user的整个体系没做修改,相当于就是通过了oidc就直接在后台开个新nacos账号或者登陆同名账号,前段时间升级了2.0.4突然出现的这个问题。

但是我看2.1.0好像改动挺大的,支持spi了,这个其实影响也不大。

@KeithTt
Copy link

KeithTt commented May 20, 2022

把镜像版本从 2.0.3 升级到 2.1.0,发现只有默认账号 nacos 能使用,其它的账号均不能登陆。

于是尝试修改密码,但是只要更新密码点击确认按钮就会退出到登陆页。

然后尝试创建新账号,能创建,但是依然无法登陆。

最后只能回滚到2.0.3,可怕的是,回滚之后普通账号依然登陆不了...

另外还发现个问题就是,只要点击没有权限的标签,也会自动退出登陆跳转到登录页。


后来发现问题是,默认登陆之后会访问 public 空间,但是普通账号没有 public 权限,然而访问没权限的资源会自动退出到登录页,所以导致无法登陆,然后给账号绑定了 public 空间的权限之后就能正常登陆了。

前端首页能不能弄成一个不需要权限的公共页面,以及,页面中间主体顶部标签栏能不能过滤一下只显示有权限的空间???

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants