Announcement

Collapse
No announcement yet.

Realm mit mehreren Rollen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Realm mit mehreren Rollen

    Es soll zwar im nächsten JavaMagazin ein Artikel betreffend Realms mit Tomcat kommen (vielleicht ist dort das Problem behandelt), aber ich habe folgendes Problem:

    Ich habe eine Anwendung die mit einem Login geschützt ist. Ich möchte aber 2 verschiedene Rollen die berechtigt sind. Einmal die Benutzer die nur einen Teil der Applikation benutzen können und einmal administrative Benutzer die alles dürfen. Ich habe mir zwar meinen eigenen Realm geschrieben, aber das Problem bewegt sich auf anderer Ebene:

    In der web.xml sieht es bis dato folgend aus:

    <pre>
    <security-constraint>
    <display-name>Eurotours Security Constraint</display-name>
    <web-resource-collection>
    <web-resource-name>Eurotours Protected Area</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
    <role-name>T_EDV</role-name>
    <role-name>T_EKK</role-name>
    </auth-constraint>
    </security-constraint>

    <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Eurotours</realm-name>
    </login-config>

    <security-role>
    <role-name>T_EDV</role-name>
    </security-role>
    <security-role>
    <role-name>T_EKK</role-name>
    </security-role>
    </pre>

    Es sieht jetzt so aus, daß sowohl Benutzer von der Rolle T_EDV und T_EKK zugriff haben, aber beide sind auf alle Servlets,.. berechtigt.

    Ich kann jetzt zwar:

    <pre>
    <url-pattern>/*</url-pattern>
    </pre>

    durch:

    <pre>
    <url-pattern>/servlet1</url-pattern>
    </pre>

    Weiter bitte nächsten Eintrag (ich hab es leider nicht geschafft den kompletten Text zu posten)

  • #2
    Ich kann jetzt zwar:

    <pre>
    <url-pattern>/*</url-pattern>
    </pre>

    durch:

    <pre>
    <url-pattern>/servlet1</url-pattern>
    </pre>

    ersetzen, aber lt. DTD

    <pre>
    &lt;!ELEMENT web-resource-collection (web-resource-name, description?,
    url-pattern*, http-method*)&gt;
    </pre>

    kann ich nur die Methode steuern, aber nicht mehr die Rolle.

    Gibt es hierfür eine Möglichkeit (mittels web.xml) zu definieren welche Rolle auf welche Resource berechtigt ist.

    Danke Dietmar

    &#10

    Comment


    • #3
      Hallo Dietmar,

      Sie können in der web.xml mehrere security-constraints definieren. Dem ersten wird die Rolle T_EDV zugewiesen, dem zweiten die Rolle T_EKK.

      Damit können Sie dann Rollen-spezifisch die URL-Pattern setzen.

      Beispiel:
      <PRE>

      &lt;security-constraint&gt;
      &lt;web-resource-collection&gt;
      &lt;web-resource-name&gt;Test&lt;/web-resource-name&gt;
      &lt;url-pattern&gt;*.html&lt;/url-pattern&gt;
      &lt;/web-resource-collection&gt;
      &lt;auth-constraint&gt;
      &lt;role-name&gt;myappuser&lt;/role-name&gt;
      &lt;/auth-constraint&gt;
      &lt;/security-constraint&gt;

      &lt;security-constraint&gt;
      &lt;web-resource-collection&gt;
      &lt;web-resource-name&gt;admintest&lt;/web-resource-name&gt;
      &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
      &lt;/web-resource-collection&gt;
      &lt;auth-constraint&gt;
      &lt;role-name&gt;myadmin&lt;/role-name&gt;
      &lt;/auth-constraint&gt;
      &lt;/security-constraint&gt;

      &lt;!-- Define the Login Configuration for this Application --&gt;
      &lt;login-config&gt;
      &lt;auth-method&gt;BASIC&lt;/auth-method&gt;
      &lt;realm-name&gt;MyApp Application&lt;/realm-name&gt;
      &lt;/login-config&gt;

      &lt;!-- Security roles referenced by this web application --&gt;
      &lt;security-role&gt;
      &lt;description&gt;
      User
      &lt;/description&gt;
      &lt;role-name&gt;myappuser&lt;/role-name&gt;
      &lt;/security-role&gt;

      &lt;security-role&gt;
      &lt;description&gt;
      admin
      &lt;/description&gt;
      &lt;role-name&gt;myadmin&lt;/role-name&gt;
      &lt;/security-role&gt;

      </PRE>

      Hoffe dies hilft,

      Michael Klos

      Comment


      • #4
        Habe dies geamcht und das Login geht bei einer der beiden Rollen immer noch nicht. Im log steht:
        2003-10-06 15:07:48 ICWINRealm[/firstchoice]: Username XXXX does NOT have role T_EDV

        Warum wird hier nur eine Rolle aufgelistet?
        Sollte es nicht lauten wie : [T_EDV,T_EKK]?

        Ich habe die Anordung von <security-role> und <security-constraint> vertauscht und bin trotz dem zu keinem anderen Ergebnis gekommen. Ich versuche das Rollenspiel mit org.apache.catalina.realm.MemoryRealm und schau prüf meine Realm Klasse.

        Vielleicht werde ich mit dem Source schlauer.
        Ich verwende 4.0.6.

        Bin für jeden weiteren Hinweis dankbar

        Gruß Dietma

        Comment


        • #5
          Hallo Dietmar,

          ich habe auf unserer Seite ein Beispiel bereitgestellt, wo eine solche Unterscheidung stattfindet. Das Beispiel findest du unter
          <a href="http://tomcat.objektpark.org/devBeispiele.html#Misc">TomC@ - Die Internetseite</a>

          Schau mal rein, ich denke das sollte alle Fragen klären.

          Gruß

          Michael Klos

          Comment

          Working...
          X