问题现象
最近在接入nacos ldap认证,但是公司的ldap basedn 和 userdn里都带有中文,
直接配置到application.properties里后发现老是报
org.springframework.ldap.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C09044E, comment: AcceptSecurityContext error, data 52e, v2580^@]; nested exception is javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C09044E, comment: AcceptSecurityContext error, data 52e, v2580^@]
at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:191)
at org.springframework.ldap.core.support.AbstractContextSource.createContext(AbstractContextSou
问题排查
下载nacos源码,本地运行,打断点调试,发现ldapTemplate里的配置乱码
git clone https://github.com/alibaba/nacos.git
ide 打开,执行
mvn install -Dmaven.test.skip=true
等mvn依赖安装完成后就可以启动,启动之前先把线上报错的配置文件拷贝到
nacos/console/src/main/resources/application.properties
然后在vscode debug配置launch.json文件里添加 添加vm配置, 启用单节点和内嵌存储模式
{
"type": "java",
"name": "Nacos",
"request": "launch",
"mainClass": "com.alibaba.nacos.Nacos",
"projectName": "nacos-console",
"vmArgs": ["-Dnacos.standalone=true", "-DembeddedStorage=true"]
},
然后点击运行debug启动 *nacos/console/src/main/Nacos.java 文件

搜索ldapLogin函数调用位置,打断点,一步一步调试
最后看到ldapTempalte的属性里中文乱码

问题解决
查找资料寻找解决方案,最快不用改代码的就是使用unicode编码的中文配置
访问 在线unicode转换
选择中文转unicode, 然后配置到application.properties中,重启应用ldap登录成功。
本文主要讲述了在接入Nacos LDAP认证时遇到的中文乱码问题。通过下载Nacos源码调试,发现在ldapTemplate配置中出现中文乱码。最终,通过在线Unicode转换将中文转换为Unicode编码并配置到application.properties中,成功解决了该问题。
1920

被折叠的 条评论
为什么被折叠?



