<security-constraint> Probleme

Status
Nicht offen für weitere Antworten.

freez

Top Contributor
Hallo,

ich würde gern alle JSF Seiten unter /user/ nur berechtigten Personen zukommen lassen. Nun kann ich das schön mit den Realms unter Tomcat 6 lösen. Die Datenbank wäre auch schon dafür vorbereitet. Also ich hätte einen JDBC Realm und alle Seiten unter /user/* wären nur per login Seite erreichbar.

Nun habe ich 3 Probleme mit dieser Geschichte:
1. Wenn ich eine Seite unter /user/* aufrufe komme ich automatisch auf die login Seite. Aber ich möchte auf der Startseite (/index.faces) dieses Login Formular anbieten. Aber wenn ich mich da anmelde (ohne eine Seite unter /user/ aufgerufen zu haben), habe ich keine Möglichkeit gefunden um auf /user/index.faces umzuleiten.

2. Ich benötige den Usernamen in meinen Beans, um userabhängige Daten in der Datenbank abzulegen. Wie komme ich an den angemeldeten Usernamen?

3. Ich möchte bei Registrierung eines Users sein Passwort "versalzen" und als MD5 Hash ablegen. Nun kann ich problemlos diesen User mit dem versalzenen Password anlegen, aber wie mache ich es dem Realm klar, dass er zu dem eingegebenen Passwort das Salz anhängen muss um sauber zu authentisieren?

Ich habe nun auch eine Idee, wie ich es lösen könnte. Nämlich ohne Realm. Ich mache die Überprüfung der Usernamen und Password in einer Bean und leite auf /user/index.faces bzw /error.faces per navigation rule weiter. Dann wäre das Problem mit dem Salz und dem Usernamen in der Bean gelöst. Nur wie mache ich dem Tomcat klar, dass dieser User nun die Seiten unter /user/ sehen darf?

Vielleicht hat ja jemand auch eine ganz andere Idee.
 

freez

Top Contributor
So, zu dem Usernamen innerhalb der Bean habe ich was gefunden:

Code:
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest req = (HttpServletRequest) fc.getExternalContext().getRequest();
String userName = req.getUserPrincipal().getName();

Den Codeschnipsel habe ich noch nicht getestet, deswegen ohne Gewähr.

Punkt 1 und 3 sind noch offen.

Muss ich vielleicht einen eigenen Realm erstellen? Kann ich von einem Realm bei erfolgreicher Authentisierung auch auf eine Seite weiterleiten?
 

freez

Top Contributor
OK, ich glaube, ich habe eine mögliche Lösung ohne großen Aufwand geschaffen:

Also, eine genz normale Konfiguration über <security-constraint>:
Code:
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>user</web-resource-name>
			<url-pattern>/user/*</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>customer</role-name>
		</auth-constraint>
	</security-constraint>
	<login-config>
	<auth-method>FORM</auth-method>
	<form-login-config>
			<form-login-page>/login.html</form-login-page>
			<form-error-page>/error.html</form-error-page>
		</form-login-config>
	</login-config>
	<security-role>
		<role-name>customer</role-name>
	</security-role>
	<security-role>
		<role-name>deaktiviert</role-name>
	</security-role>

ich habe eine Session Bean die mir die Login Informationen speichert:

Code:
public class LoginBean {
	private String userName = "";
	private String password = "";
	private String saltedPassword = "";
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getSaltedPassword() {
		this.saltedPassword = userName + password;
		return saltedPassword;
	}
	public void setSaltedPassword(String saltedPassword) {
		this.saltedPassword = saltedPassword;
	}
}

in der index.faces habe ich folgendes Formular, welches die LoginBean betankt:
Code:
<a4j:form styleClass="formTable">
							<table class="loginTable" cellpadding="0" cellspacing="3">
								<tr>
									<td class="bezeichnung">
										E-Mail Adresse:
									</td>
									<td>
										<h:inputText value="#{loginBean.userName}" />
									</td>
									<td class="bezeichnung">
										Passwort:
									</td>
									<td>
										<h:inputSecret value="#{loginBean.password}" />
									</td>
									<td>
										<a4j:commandButton action="toUserBase" value="Login" />
									</td>
								</tr>
							</table>


						</a4j:form>


Eine Navigation Rule in der faces-config.xml verweist auf mit dem Klick auf den Button auf die /user/index.faces. Da die geschützt ist, wird die login.faces aufgerufen. Diese Seite enthält ein unsichtbares Formular mit 2 Hidden Felder, welche den Usernamen und das "versalzene" Password beinhaltet. Beim Laden der Seite wird das Formular automatisch abgeschickt, was die Anmeldung vornimmt. Bei Erfolg, wird auf die /user/index.faces geleitet und beim Fehler auf die /error.faces

login.faces:
Code:
<body onload="document.loginForm.submit()">
		<form name="loginForm" method="post" action="j_security_check">
			<input name="j_username" type="hidden" value="#{loginBean.userName}" />
			<input name="j_password" type="hidden" value="#{loginBean.saltedPassword}" />
		</form>			
	</body>

Nun habe ich 2 Möglichkeiten an den Usernamen zu kommen. Einmal durch die LoginBean und dann durch den UserPrincipal.getName()
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dimax JSP Probleme mit Java in JSP Allgemeines EE 21
OnDemand Performance Probleme wegen vieler Objekte Allgemeines EE 3
B @Startup - FileWatcher - Probleme beim Hochfahren des Servers Allgemeines EE 4
Psypsy Spring Probleme mit Datenzugriff Allgemeines EE 5
D Apache POI Probleme mit Daten(Datum) die aus Formeln entstehen Allgemeines EE 3
T Probleme mit File renameTo bzw. File delete @@ Allgemeines EE 3
F Probleme mit JSF und ManagedBean Allgemeines EE 3
B Probleme mit Templates in einem Webprojekt Allgemeines EE 6
Fu3L Probleme beim Einrichten Allgemeines EE 3
A Probleme bei der Einbindung eines Liferay Portalserver (Glassfish) Allgemeines EE 7
S Datenbankzugriff (Probleme mit Cache?!) Allgemeines EE 8
K Probleme mit Apache MyFaces 2 und ICEFaces Facelets Allgemeines EE 1
K Probleme mit Enterprise Anwendung Allgemeines EE 5
D Probleme mit Cactus Allgemeines EE 9
G Probleme im Tomcat - loading WebappClassLoader Allgemeines EE 3
T Probleme mit ApplikationClient mit Sicherheitsanmeldung! Allgemeines EE 2
G Probleme mit dem Klassenpfad nach dem deployment Allgemeines EE 2
Q Probleme bei einbinden von RichFaces. Allgemeines EE 10
T Probleme mit Facelets und if foreach und when Allgemeines EE 3
V Bildupload probleme Allgemeines EE 2
T Probleme mit Komplexerer ejb-ql Abfrage! Allgemeines EE 2
R EJB Client: Probleme mit der Client.jar Allgemeines EE 2
M Probleme mit Leerzeichen bei HtmlOutputLink Allgemeines EE 5
K probleme mit <h:dataTable> Allgemeines EE 2
M probleme mit client server kommunikation Allgemeines EE 3
S Probleme mit struts - ActionServlet Allgemeines EE 6
E BackingBean Probleme Allgemeines EE 2
K JBoss AS & IDE Probleme Allgemeines EE 2
T Probleme beim Einsatz von J2EE / JBoss Allgemeines EE 4
Ö Spring, Probleme mit FlowScope und HttpServletRequest Allgemeines EE 2
J Probleme mit Struts Allgemeines EE 3
DaRolla Probleme mit Verzeichnissen (Servlet, JSP, Tomcat) Allgemeines EE 8
G Probleme mit ResultSet Allgemeines EE 9
L Probleme mit Kompilierung von JNDI Allgemeines EE 2
K Internet Explorer MIME Type Probleme Allgemeines EE 2
M Probleme beim Performancetuning des Servlets Allgemeines EE 2
G Probleme mit Validierung (Struts, validation.xml) Allgemeines EE 4
G Mehrere Probleme mit Servlets/Java Allgemeines EE 15
W Tomcat Probleme Allgemeines EE 7
FsMarine Probleme beim ausführen von JSP dateien unter Tomcat Allgemeines EE 4
E JBoss 4.0.2 - Probleme mit der Spezifikation Allgemeines EE 3
R Probleme mit Tutorial Allgemeines EE 4
M Probleme bei Aufruf von JSPs in Unterverzeichnissen Allgemeines EE 2
M Probleme beim Webservice Deployment(Sun ApplicationServer) Allgemeines EE 2
H JONAS 4.1.4 Start Probleme Allgemeines EE 2
O Probleme mit Aktualität bei JBOSS Allgemeines EE 4
A Probleme mit J2EE und Tomcat Allgemeines EE 7
R Inputstream Probleme Allgemeines EE 11
P Probleme mit File renameTo bzw. File delete Allgemeines EE 3
F Probleme mit Eclipse/JBoss Allgemeines EE 6

Ähnliche Java Themen

Neue Themen


Oben