Spring Boot 1.5.9 升级2.0.3,有关OAuth的问题

Author Avatar
STRRL 8月 19, 2018

起因

升级 Sprint Boot 版本后,发现登陆不进去,然后发现 OAuth 炸掉了。

经过

看了一下 Chrome 的抓包,发现请求/oauth/token时会重新 302 到/login,然后 302 到/oauth/token,如此反复,导致重定向次数过多。
在本地起开发环境后,观察日志,发现/oauth/token返回的是 401,而且提示找不到username对应的用户,再往上追查,找到了问题的来源,抛出了这个异常:java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
Google 之,果然找到了解决方案:传送门
 注入一个PasswordEncoder的 bean 即可解决问题,同时注意,OAuth 配置中Client secret也需要使用这个PasswordEncoder来加密一次。

结果

耗时两个半小时,问题修复。
以后升级版本时还是要多看 Release Note。