使用JDK17、Tomcat10.1.17和NetBeans17部署时认证失败且用户被锁定
解决Tomcat+NetBeans部署时反复认证失败及用户锁定问题
问题现象
- 使用JDK 17、Tomcat 10.1.17和NetBeans IDE 17部署任意项目时,反复弹出“Authentication required”认证框,输入正确账号密码仍无法通过验证
- 关闭对话框后提示部署错误:
Deployment error: Access to Tomcat server has not been authorized. Set the correct username and password with the "manager-script" role in the Tomcat customizer in the Server Manager. See the server log for details. - Tomcat启动日志出现警告:
WARNING [http-nio-8080-exec-5] org.apache.catalina.realm.LockOutRealm.filterLockedAccounts An attempt was made to authenticate the locked user [admin]
解决方案
修复Tomcat用户配置并解锁锁定用户
- 打开Tomcat安装目录下的
conf/tomcat-users.xml,确保配置了拥有manager-script角色的用户,示例配置:
注意:避开已被锁定的<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,admin-gui,admin-script"/>admin账号,换用新用户名避免冲突。 - 解锁被锁定用户:删除Tomcat目录下
work/Catalina/localhost/manager中的锁定文件,或直接删除整个work目录,随后重启Tomcat。
- 打开Tomcat安装目录下的
核对NetBeans服务器配置
- 打开NetBeans的
Services面板,找到Tomcat服务器,右键选择Properties - 在
Connection标签页,确认Username和Password与tomcat-users.xml中的账号完全一致 - 检查
HTTP Port是否和Tomcatconf/server.xml里Connector配置的端口一致(默认8080)
- 打开NetBeans的
清除NetBeans缓存
- 关闭NetBeans,找到对应缓存目录:
- Windows:
C:\Users\<你的用户名>\AppData\Local\NetBeans\Cache\17 - Linux/macOS:
~/.cache/netbeans/17
- Windows:
- 删除整个缓存目录,重新启动NetBeans后尝试部署
- 关闭NetBeans,找到对应缓存目录:
调整Tomcat的LockOutRealm配置(可选)
如果用户锁定问题反复出现,可临时关闭LockOutRealm测试:
打开Tomcatconf/server.xml,注释掉LockOutRealm,改用普通的UserDatabaseRealm:<!-- <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>重启Tomcat后测试,若正常,可再调整LockOutRealm的锁定参数(比如
failureCount、lockOutTime)
内容的提问来源于stack exchange,提问作者Nguyen Danh Huy K18 HL
相关产品推荐
相关产品推荐

