我目前正在开发一个客户端-服务器应用程序,该应用程序用于ProgrammaticLogin
针对服务器对客户端用户进行身份验证。Glassfish
设置了一个默认领域,该领域通过ActiveDirectory
. 我们最近将 glassfish 的版本从 升级3.0.1
到3.1.2.2
,现在我们遇到了一个奇怪的错误:运行一段时间后,似乎是随机的,默认安全领域更改为file
,而不是ActiveDirectory
-realm!不用说,这会抑制人们从客户端登录的能力。当 glassfish 重新启动时,它会再次开始工作,并正确使用ActiveDirectory
-realm 进行身份验证。
有谁知道可能导致这种行为的原因是什么Glassfish
?可能是与AD
-realm 的脱节还是什么?
错误生效后的堆栈跟踪摘录:
Programmatic login failed
com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Failed file login for me.
at com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:394)
at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:240)
at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:153)
at com.sun.appserv.security.ProgrammaticLogin$1.run(ProgrammaticLogin.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:168)
at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:239)
at com.sun.appserv.security.ProgrammaticLogin.login(ProgrammaticLogin.java:211)
[...]
Caused by: javax.security.auth.login.LoginException: Failed file login for me.
at com.sun.enterprise.security.auth.login.FileLoginModule.authenticate(FileLoginModule.java:84)
at com.sun.enterprise.security.auth.login.PasswordLoginModule.authenticateUser(PasswordLoginModule.java:117)
at com.sun.appserv.security.AppservPasswordLoginModule.login(AppservPasswordLoginModule.java:143)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784)
at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:698)
at javax.security.auth.login.LoginContext$4.run(LoginContext.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:695)
at javax.security.auth.login.LoginContext.login(LoginContext.java:594)
at com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:382)