Ich versuche, den JdbcRealm für meine Anwendung zu arbeiten. Das ist, was ich habe, so weit:Kann jdbcRealm nicht arbeiten
In meiner web.xml habe ich:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbcRealm</realm-name>
<form-login-config>
<form-login-page>/user/login.jsf</form-login-page>
<form-error-page>/user/error.jsf</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin Console</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
In Glasfischen ich einen Bereich definiert haben:
Realm Name: jdbcRealm
Class Name: com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm
JAAS Context: jdbcRealm
JNDI: jdbc/imagineSecurity
User Table: realm_user
User name column: username
Password column: password
Group table: realm_user_role_viw
Group name column: rolename
Digest algorithm: none
others fields are blank
ich den Security Manager und Standard aktiviert haben Prinzipal zum Rollen-Mapping unter Sicherheitseinstellungen. Ich habe auch den Standardbereich jdbcDigest gesetzt, nur um sicher zu sein, dass ich denke, dass es in web.xml ausreichen sollte.
Ich habe die jdbc-Ressourcen erstellt und getestet, dass ich über meine Webapplikation darauf zugreifen konnte, so dass es dort kein Problem geben sollte.
Wenn ich versuche, meine Form melden Sie sich als aber ich folgende Fehlermeldung erhalten erwartet erscheint:
WARNING: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Failed file login for admin. WARNING: Exception com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Failed file login for admin. 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.web.security.RealmAdapter.authenticate(RealmAdapter.java:512) at com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:453) at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:268) at org.apache.catalina.authenticator.AuthenticatorBase.processSecurityCheck(AuthenticatorBase.java:911) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:546) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:623) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) Caused by: javax.security.auth.login.LoginException: Failed file login for admin. 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:148) 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) ... 29 more
Was mich beunruhigt, besonders über diesen Fehler ist der Teil, wo es heißt: Failed Datei Login für den Admin, die scheint schlage vor, dass es immer noch den Dateibereich verwendet.
Ich habe auch die folgende Warnung: WARNUNG: Keine Principals zugeordnet Role [admin]. Aber ich glaube, dass die Standard-Principal zu Rolle Mapping-Einstellung dieses Mapping kümmern sollte.
Ich habe Admin-Admin-Benutzer und Rolle in meinem db mit Passwort ein
Was bin ich?
Können Sie ein Snippet Ihrer domain.xml oder einer anderen Konfiguration teilen? – Walter
Entschuldigung, ich arbeite nicht mehr an diesem Projekt und habe den Entwicklungsserver, auf dem das Projekt läuft, gelöscht, sodass ich diese Datei nicht mehr habe. Vielleicht am besten, wenn du deine eigene Frage postest, wenn du Probleme hast, einen jdbc-Bereich zum Laufen zu bringen. – Eelke
Ich dachte mein Problem aus, es stellte sich heraus, dass mein Datenbankschema nicht richtig eingerichtet wurde. Am Ende habe ich die gewünschten Tabellen erstellt, um die Tabellenstruktur so zu gestalten, wie Glassfish es wollte. – Walter