Login nicht ausgelöst eingeschränkt Seite im glassfish jdbcrealm authentication
Ich bin sehr neu in EJB-Sicherheit und GlassFish Authentifizierungs -, Autorisierungs-Mechanismus. Ich habe eine jdbc
Reich und konfiguriert sun-web.xml
und web.xml
zum anzeigen der Aufgaben und einschränken des Zugriffs auf eine Seite.
Aber mein problem ist, dass wenn ich den Zugang beschränken, zu allen Seiten, es funktioniert und löst das login pop-up, bevor das laden der Startseite (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 beschränken, um eine Seite in einem Ordner security
, GlassFish nicht aufgefordert, den login und leitet den Benutzer auf die eingeschränkte Seite.
<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 lösen.. vielen Dank im Voraus.
Fand ich auch diese Einträge, nachdem ich wandte sich auf der security manager
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)
wie es scheint, admin-principal in der admin-Bereich ist automatisch authentifiziert und verwendet für meine Anwendung lieber als mit meinem jdbcrealm. Irgendwelche Gedanken auf, wie man dieses Problem beheben?
Update
Tut mir Leid, ich habe gerade die Authentifizierung, um die form zu überprüfen. Ich habe ihn back to BASIC wieder.
Und ja, ich habe das jdbcrealm name als default-realm.
Ihr Recht.. es ist genau das
GlassFish nicht-redirect auf die login-Formular-Seite und den Zugriff auf eingeschränkte Ressourcen nicht eingeschränkt
Ich denke, es ist weil admin-realm admin ist automatisch authentifiziert und wenn ich versuche, auf eine eingeschränkte Seite, überprüft der Benutzer authentifiziert, und da er der admin und hat die Berechtigung, die Seite, die die Seite erreichbar ist und nicht die Aufforderung zum login.
Diese immer noch angezeigt werden, wenn ich die Anwendung ausführen und versuchen nicht anmelden, um admin-Konsole Glas-Fisch
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 * *)
Update 2
Versuchte ich mit <url-pattern>/*</url-pattern>
statt <url-pattern>/security/*</url-pattern>
und interessant das ist, was ich bekam in der Spur.
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 geht um eine access denied Seite.
'HTTP-Status 403 - der Zugriff auf die angeforderte Ressource wurde verweigert'
Ich verstehe nicht, wie glassfish authentifiziert den Benutzer Mitarbeiter, ohne dass der Benutzer die übermittlung der Zugangsdaten. Er selbst sagt, 'Password login gelungen ist : Mitarbeiter". Bitte helfen Sie mir dieses problem zu lösen.
Faust alle danken Ihnen sehr für Ihre Bemühungen. Ich bin immer noch nicht mit dem problem. Ich bin Entsendung 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>
Es gibt auch keine stack-trace. Keine Ausnahme.. Der user ist nur Weiterleitung auf die geschützte Seite, als ob es keine Authentifizierungsanforderungen. Dies ist eine jsf visual web development-Projekt mit Netbeans 6.5.1 und Glassfish v2.
Vielen Dank.
- Welche version von Glassfish sind Sie? Klicken Sie auf "Version" in der Admin-Konsole.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, fügen Sie "/Flächen", um die url-Muster. Zum Beispiel:
/faces/security/*
Könnten Sie bitte poste alle relevanten Teile Ihrer
web.xml
weil ich habe einen test mit diesemweb.xml
:Und Anforderung einer geschützten Ressource (http://localhost:8080/mywebapp/jsp/security/protected/ hier) tut, fragt mich nach einen Benutzernamen und Passwort. In anderen Worten, ich kann das problem nicht reproduzieren (ich war mit GlassFish v3).
Update: beendete ich zum sichern meiner Beispiel-webapp mit einem
jdbc
Bereich aus, und bestätigen Sie, dass die Dinge funktionieren. So, wie ich sagte, geben Sie bitte Ihreweb.xml
und Ihresun-web.xml
. Auch, bitte legen Sie den Protokolliergrad auf FEINSTEN für security-Kram:Und fügen Sie die relevante Spuren.
Update: ich denke, dass die Spuren, die du zeigst, sind für die Anmeldung der admin Benutzer in der admin-Konsole. Wenn nicht, haben Sie die jdbc-realm als Standard-realm (Datenbank ist mein jdbc-realm in den folgenden capture)?
BTW, ich dachte, Sie waren mit BASIC-Authentifizierung. Aber nach der Deskriptor für Sie bereitgestellt, die Sie verwenden FORM. So, konnte Sie klären, was Sie tatsächlich nutzen, und was genau das problem ist (wie: "GlassFish nicht-redirect auf die login-Formular-Seite und den Zugriff auf eingeschränkte Ressourcen nicht eingeschränkt")?
Zwei mögliche Lösungen:
1 - Hast du versucht, von einem anderen browser? Wegen der login-Daten kann zwischengespeichert, also, wenn Sie eingegeben haben, sobald es wird nicht bitten Sie erneut, bis Sie führen Sie einen logout-Aktion.
2 - Umsetzung einer logout-Methode. Ich verwende JSF 2.0 und mein logout-Methode ist so etwas wie dieses:
Können Sie versuchen, fügen Sie diese Methode, um Ihre Bohnen, und dann nennen es eine Schaltfläche mit " action="#{yourBean.logout}"'.
Dann, wenn Sie den browser aktualisieren, es wird eine Eingabeaufforderung für Anmeldeinformationen.
Wenn du mit NetBeans 6.8, möchten Sie vielleicht, um zu überprüfen, dass die 'Wahren Sitzungen Über eine Umschichtung' - Eigenschaft nicht aktiviert ist.
Die Server-Eigenschaften-dialog von NetBeans 6.8 für GlassFish v3 http://blogs.sun.com/vkraemer/resource/preserve-session.png
Warum? Es klingt wie Sie getestet haben, die 'alle sperren' erste Fall (und waren in der Lage, login erfolgreich). Wenn Sie beim ändern der web.xml nutzen /Sicherheit/*, deine alte Sitzung war noch gültig und angemeldet, also... Sie gehen direkt zu der Seite, anstatt herausgefordert, sich zu authentifizieren.
Server-adapter für Eclipse hat dieses feature auch.