Ich bin sehr neu im Bereich der EJB-Sicherheit und des GlassFish-Authentifizierungs- und Autorisierungsmechanismus. Ich habe eine jdbc
Bereich und konfiguriert sun-web.xml
y web.xml
um die Rollen zuzuordnen und den Zugriff auf eine Seite zu beschränken.
Mein Problem ist jedoch, dass, wenn ich den Zugriff auf alle Seiten zu beschränken, es funktioniert und löst die Login-Pop-up vor dem Laden der Willkommensseite (mit BASIC-Authentifizierung).
<web-resource-collection>
<web-resource-name>All Pages</web-resource-name>
<description/>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
aber wenn ich den Zugriff auf eine Seite in einem Ordner beschränke security
fragt GlassFish nicht nach der Anmeldung und leitet den Benutzer auf die eingeschränkte Seite um.
<web-resource-collection>
<web-resource-name>All Pages</web-resource-name>
<description/>
<url-pattern>/security/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>`
Bitte helfen Sie mir, dieses Problem zu lösen Vielen Dank im Voraus.
Ich fand auch diese Einträge, nachdem ich den Sicherheitsmanager aktiviert hatte
Processing login with credentials of type: class com.sun.enterprise.security.auth.login.PasswordCredential
Logging in user [admin] into realm: admin-realm using JAAS module: fileRealm
Login module initialized: class com.sun.enterprise.security.auth.login.FileLoginModule
File login succeeded for: admin
JAAS login complete.
JAAS authentication committed.
Password login succeeded for : admin
permission check done to set SecurityContext
Set security context as user: admin
[Web-Security] hasResource perm: (javax.security.jacc.WebResourcePermission /faces/security/UserRedirect.jsp GET)
es scheint, wie Admin-Prinzipal in Admin-Realm automatisch authentifiziert und für meine Anwendung verwendet wird, anstatt meine Jdbcrealm zu verwenden. Irgendwelche Ideen, wie man das beheben kann?
Update
Es tut mir leid, ich habe gerade die Authentifizierung in ein Formular zur Überprüfung geändert. Ich habe sie wieder auf BASIC zurückgestellt. Und ja, ich habe den Namen jdbcrealm als Standard-Realm.
Sie haben Recht genau das ist es.
GlassFish leitet nicht auf die Seite des Anmeldeformulars um und der Zugriff auf eingeschränkte Ressourcen ist nicht eingeschränkt
Ich denke, dass es daran liegt, dass der Admin-Realm-Admin automatisch authentifiziert wird, und wenn ich versuche, auf eine eingeschränkte Seite zuzugreifen, wird der authentifizierte Benutzer überprüft, und da es sich um den Admin handelt und er die Berechtigung für die Seite hat, ist die Seite zugänglich und fordert nicht zur Anmeldung auf.
Diese erscheinen immer noch, wenn ich die Anwendung ausführe und nicht versuche, mich bei der Verwaltungskonsole von glass fish anzumelden
Processing login with credentials of type: class com.sun.enterprise.security.auth.login.PasswordCredential
Logging in user [admin] into realm: admin-realm using JAAS module: fileRealm
Login module initialized: class com.sun.enterprise.security.auth.login.FileLoginModule
File login succeeded for: admin
JAAS login complete.
JAAS authentication committed.
Password login succeeded for : admin
permission check done to set SecurityContext
Set security context as user: admin
Auch diese
(unresolved javax.security.jacc.WebUserDataPermission /security/* null)
(unresolved javax.security.jacc.WebUserDataPermission /:/security/* null)
(unresolved com.sun.corba.ee.impl.presentation.rmi.DynamicAccessPermission access null)
(unresolved javax.security.jacc.WebResourcePermission /:/security/* null)
(unresolved javax.security.jacc.WebResourcePermission /security/* !DELETE,GET,HEAD,OPTIONS,POST,PUT,TRACE)
(unresolved com.sun.enterprise.security.CORBAObjectPermission * *)
Aktualisierung 2
Ich habe es mit <url-pattern>/*</url-pattern>
anstelle von <url-pattern>/security/*</url-pattern>
und interessanterweise ist das, was ich in der Spur erhalten habe.
Processing login with credentials of type: class com.sun.enterprise.security.auth.login.PasswordCredential
Logging in user [employee] into realm: emsSecurity using JAAS module: jdbcRealm
Login module initialized: class com.sun.enterprise.security.auth.login.JDBCLoginModule
JDBC login succeeded for: employee groups:[Ljava.lang.String;@16bfca4
JAAS login complete.
JAAS authentication committed.
Password login succeeded for : employee
permission check done to set SecurityContext
Set security context as user: employee
und es wird eine Seite mit verweigertem Zugriff angezeigt.
HTTP Status 403 - Der Zugriff auf die angeforderte Ressource wurde verweigert'.
Ich verstehe nicht, wie Glassfish den Benutzer-Mitarbeiter authentifiziert, ohne dass der Benutzer die Anmeldedaten eingibt. Es wird sogar angezeigt: "Passwortanmeldung erfolgreich für: Mitarbeiter". Bitte helfen Sie mir, dieses Problem zu lösen.
Zunächst einmal herzlichen Dank für Ihre Bemühungen. Ich bin immer noch mit dem Problem stecken. Ich poste hier die Xml-Dateien.
sun-web.xml
<security-role-mapping>
<role-name>Employee</role-name>
<group-name>Employee</group-name>
web.xml
<security-constraint>
<display-name>Login Constraint</display-name>
<web-resource-collection>
<web-resource-name>User Redirect page</web-resource-name>
<description/>
<url-pattern>/security/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>Employee</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>deliverySecurity</realm-name>
<form-login-config>
<form-login-page>/Login.jsp</form-login-page>
<form-error-page>/index.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description/>
<role-name>Employee</role-name>
</security-role>
Außerdem gibt es keinen Stack-Trace. Keine Ausnahme.. Der Benutzer wird einfach auf die gesicherte Seite umgeleitet, als ob es keine Authentifizierungsanforderungen gäbe. Dies ist ein jsf visuelles Webentwicklungsprojekt mit Netbeans 6.5.1 und Glassfish v2. Vielen Dank!
0 Stimmen
Welche Version von Glassfish läuft bei Ihnen? Klicken Sie in der Verwaltungskonsole auf "Version".