2012-04-15 10 views
2

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?

Antwort

2

Hinzufügen des Bereichs unter dem Server-Config-Knoten anstelle der Standard-Config hilft.

+0

Können Sie ein Snippet Ihrer domain.xml oder einer anderen Konfiguration teilen? – Walter

+0

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

+0

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