# Nochmal Realm, Unix, Windows



## Willi2793 (9. Aug 2012)

Hallo,

ich habe immer noch ein Problem mit einem Realm bzw. dessen Auswirkungen. Zunächst mal die relevanten Zeilen zur Konfiguration:

[XML]    <welcome-file-list>
        <welcome-file>user/home.xhtml</welcome-file>
    </welcome-file-list>
    <security-constraint>
        <display-name>userConstraint</display-name>
        <web-resource-collection>
            <web-resource-name>User-Sites</web-resource-name>
            <description>Seiten fuer den normalen User</description>
            <url-pattern>/user/*</url-pattern>
            <url-pattern>/faces/user/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <description>Alle Gruppen duerfen zugreifen</description>
            <role-name>user</role-name>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>twiburealm</realm-name>
        <form-login-config>
            <form-login-page>/faces/login.xhtml</form-login-page>
            <form-error-page>/faces/loginError.xhtml</form-error-page>
        </form-login-config>
    </login-config>
    <security-role>
        <description>Normaler Anwendungs-User</description>
        <role-name>user</role-name>
    </security-role>
    <security-role>
        <description>Administrator</description>
        <role-name>admin</role-name>
    </security-role>[/XML]

Zeile 10 spielt dabei noch eine Rolle. Und zwar habe ich das Ganze unter Windows deployed und es funktioniert wie gedacht. Ohne Zeile 10. Unter Unix wird ohne Zeile 10. die Datei "user/home-xhtml" angezeigt. Mit Zeile 10 wird erst anch dem Login gefragt. Wie gewünscht. Aber nach erfolgreichem Login wird beim Versuch "user/home.xhtml" anzuzeigen ein Fehler angezeigt das ich nicht zugreifen darf (Code 403).

Realm, JDBC-Pool und JNDI sind alle exakt gleich. Das Ganze findet auf beiden System unter Glassfish 3.1.2.2 statt

Was kann das sein?

Grüße,
Willi


----------



## nillehammer (9. Aug 2012)

Ich glaube, es fehlt einfach der führende Slash, z.B. hier:
[XML]
<welcome-file-list>
   <!-- Hier fehlt der führende Slash --->
  <welcome-file>user/home.xhtml</welcome-file>
</welcome-file-list>
[/XML]


----------



## Willi2793 (9. Aug 2012)

nillehammer hat gesagt.:


> Ich glaube, es fehlt einfach der führende Slash, z.B. hier:




Danke, aber leider nicht. Das hier:

[XML]<welcome-file-list>
  <welcome-file>/user/home.xhtml</welcome-file>
</welcome-file-list>[/XML]

führte dazu das der Aufruf gar nicht über den Login ging also nicht in die zu schützenden Directories fiel.

Dann habe ich das probiert:

[XML]<welcome-file-list>
  <welcome-file>/faces/user/home.xhtml</welcome-file>
</welcome-file-list>[/XML]

Das allerdings führte dazu das die Ressource erst gar nicht gefunden wurde.

Zu guter Letzt habe ich das probiert:

[XML]<welcome-file-list>
  <welcome-file>faces/user/home.xhtml</welcome-file>
</welcome-file-list>[/XML]

Was aber auch wieder zum Ursprungs-Verhalten führte. Also Login kam aber der dann kam der Forbidden-Screen wieder.


----------



## Willi2793 (12. Aug 2012)

Ich würde das hier gerne nochmal pushen. Ich stehe völlig auf dem Schlauch


----------



## Willi2793 (12. Aug 2012)

Noch als Ergänzung der Auszug aus dem Logfile:


```
[Web-Security] Setting Policy Context ID: old = null ctxID = TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "" "GET")
[Web-Security] hasUserDataPermission isGranted: true
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] Generating a protection domain for Permission check.
[Web-Security] Codesource with Web URL: file:/TWiBu/TWiBu
[Web-Security] Checking Web Permission with Principals : null
[Web-Security] Web Permission = ("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET")
JACC Policy Provider: PolicyWrapper.implies, context (TWiBu/TWiBu)- result was(false) permission (("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET"))
[Web-Security] hasResource isGranted: false
[Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET")
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "/login.xhtml" "GET")
[Web-Security] hasUserDataPermission isGranted: true
[Web-Security] Setting Policy Context ID: old = null ctxID = TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "/javax.faces.resource/twibu.css.xhtml" "GET")
[Web-Security] hasUserDataPermission isGranted: true
[Web-Security] Setting Policy Context ID: old = null ctxID = TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "/javax.faces.resource/login.css.xhtml" "GET")
[Web-Security] hasUserDataPermission isGranted: true
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] hasResource isGranted: true
[Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" "/javax.faces.resource/twibu.css.xhtml" "GET")
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] hasResource isGranted: true
[Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" "/javax.faces.resource/login.css.xhtml" "GET")
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "/javax.faces.resource/twibu.css.xhtml" "GET")
[Web-Security] hasUserDataPermission isGranted: true
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] hasResource isGranted: true
[Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" "/javax.faces.resource/twibu.css.xhtml" "GET")
[Web-Security] Setting Policy Context ID: old = null ctxID = TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "/javax.faces.resource/login.css.xhtml" "GET")
[Web-Security] hasUserDataPermission isGranted: true
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] hasResource isGranted: true
[Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" "/javax.faces.resource/login.css.xhtml" "GET")
[Web-Security] Setting Policy Context ID: old = null ctxID = TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "/j_security_check" "POST")
[Web-Security] hasUserDataPermission isGranted: true
Processing login with credentials of type: class com.sun.enterprise.security.auth.login.common.PasswordCredential
Logging in user [Willi] into realm: twiburealm using JAAS module: jdbcRealm
Login module initialized: class com.sun.enterprise.security.auth.login.JDBCLoginModule
JDBC login succeeded for: Willi groups:[admin, user]
JAAS login complete.
JAAS authentication committed.
Password login succeeded for : Willi
Set security context as user: Willi
[Web-Security] Setting Policy Context ID: old = null ctxID = TWiBu/TWiBu
[Web-Security] hasUserDataPermission perm: ("javax.security.jacc.WebUserDataPermission" "" "GET")
[Web-Security] hasUserDataPermission isGranted: true
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] Codesource with Web URL: file:/TWiBu/TWiBu
[Web-Security] Checking Web Permission with Principals : null
[Web-Security] Web Permission = ("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET")
JACC Policy Provider: PolicyWrapper.implies, context (TWiBu/TWiBu)- result was(false) permission (("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET"))
[Web-Security] hasResource isGranted: false
[Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET")
[Web-Security] Policy Context ID was: TWiBu/TWiBu
[Web-Security] Generating a protection domain for Permission check.
[Web-Security] Checking with Principal : Willi
[Web-Security] Checking with Principal : admin
[Web-Security] Checking with Principal : user
[Web-Security] Codesource with Web URL: file:/TWiBu/TWiBu
[Web-Security] Checking Web Permission with Principals : Willi, admin, user
[Web-Security] Web Permission = ("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET")
[Web-Security] hasResource isGranted: true
[Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" "/user/home.xhtml" "GET")
```

Der Unterschied zwischen Windows und Unix besteht (abgesehen vom Timestamp und der Thread-Nummerierung welche ich weggelassen habe) nur in der vorletzten Zeile. Zu sehen ist Windows mit dem Schluß mit *true* und in Unix steht da *false*.

In der Benamung aller Elemente (Realm, Gruppe, User, Passwort, Context, Folder, Dateien, ...) habe ich überall auch peinlichst auf Groß-/Kleinschreibung geachtet


----------



## Willi2793 (16. Aug 2012)

So, inzwischen habe ich die Lösung. Falls noch jemand das Problem hat werde ich mal meine Lösung nennen. Unter Unix wird die Datei glassfish-web.xml benötigt. Zu dem oben egschilderten Problem war dann diese Datei notwendig:

[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>
  <security-role-mapping>
    <role-name>user</role-name>
    <group-name>user</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>[/XML]

Unter Windows war sie nicht notwendig


----------

