Java forms-auth mit j_security_check und Glassfish
Ich bin das eintauchen meinen Zeh in den trüben Gewässern von Java und ich arbeite durch die PackPub Java ee 6 Mit Netbeans7 buchen . Eines der frühen Beispiele ist die Formularauthentifizierung, die beinhaltet das einrichten der deployment-Deskriptor (web.xml) mit einem Sicherheits-Rolle 'admin' und eine Einschränkung. Es begleitet Sie dann durch die Glassfish descriptor durch diese Zuordnung der Rollen zu den neuen Gruppen und dann unter Verwendung des Glassfish-Konsole zum erstellen neuer Benutzer in diese Gruppen.
Wenn ich versuche eine Seite zuzugreifen, die innerhalb dieses geschützten Seite, die ich bin präsentiert mit der login-Seite wie erwartet, aber mein login funktioniert nicht. Auch wenn ich weiß, ich bin putting in gültige Anmeldeinformationen erstellt, in der glassfish-Konsole, bekomme ich noch meine login-Fehler-Seite (gerendert auf den j_security_check URL).
Die login-Seite ist als basic, wie es kommt:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Log in to view secure content</title>
</head>
<body>
<h1>Log in</h1>
<form action="j_security_check" method="POST">
<table border="0">
<tbody>
<tr>
<td slign="right">Username: </td>
<td><input type="text" name="j_username" value="" /></td>
</tr>
<tr>
<td slign="right">Password: </td>
<td><input type="password" name="j_password" value="" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Login" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Habe ich nicht konfiguriert etwas, und es ist wahrscheinlich wirklich etwas basic, aber das Buch nicht hilft, Fragen wie diese, so fragte mich, ob ich könnte einige Zeiger auf, wo um das Debuggen zu starten oder zu diagnostizieren das problem.
Meine web.xml ist:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<security-constraint>
<display-name>Admin Pages</display-name>
<web-resource-collection>
<web-resource-name>Administrative pages</web-resource-name>
<description/>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>Admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>file</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/loginerror.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>Administrators</description>
<role-name>Admin</role-name>
</security-role>
<security-role>
<description>public user</description>
<role-name>User</role-name>
</security-role>
</web-app>
glassfish-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<security-role-mapping>
<role-name>Admin</role-name>
<group-name>Admin</group-name>
</security-role-mapping>
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>
</glassfish-web-app>
Habe ich doppelt geprüft, dass in der Glassfish-Konsole, ich bin Bearbeiten
Configuartions|Security|Realms|file
ist und dass mein neuer Benutzer hat eine Gruppe-Liste von 'Admin'
Dank
- haben Sie überprüft, die key-Datei?
- Nein, wo ist das? Ich bin gerade erst begonnen, so würde nicht wissen, wo/wie
- wenn Sie nicht geändert haben, es in der admin-Konsole sein Pfad ist domain-dir/config/keyfile. Öffnen Sie es und überprüfen, ob es Ihre Nutzer enthält.
- Vielleicht ist die Antwort zu this questin könnte Ihnen helfen, so gut es mir getan hat?
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Sie eine benutzerdefinierte login-Seite?
wenn Sie konfiguriert alle Sachen, werfen Sie auch einen Blick auf Ihre login-Seite sollten Sie etwas wie
versuchen mit
Yeah. Vor etwa 2 Jahren, aber ich hatte das gleiche problem und gründete die Lösung. Zwar hatte ich installiert die richtige version von Netbeans (7.0) und die richtige version des jdk (1.6.0_45) zu Folgen, das Buch, Netbeans kommen geliefert mit glassfish 3.1. Also, was ich getan habe, ist, entfernen Sie die glassfish-server von Netbeans, deinstalliert es und installiert glashfish 3.0.1, also mein Beispiel funktioniert perfekt. Vergessen Sie nicht ausführen Netbeans als system-administrator.