Announcement

Collapse
No announcement yet.

Tomcat5 mit LDAP authentifizieren

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

  • Tomcat5 mit LDAP authentifizieren

    Hallo,

    ich habe zwar schon die Suche bemüht aber nichts gefunden. Wie im Titel zu erkennen versuche, nachdem ich den Apache2 per LDAP authentifziert habe, das gleiche mit dem Tomcat zu machen. Im Moment soll jeglicher Zugriff auf den Tomcat per LDAP authentifiziert werden. Soll heissen: http://UrlZumTomcat:8080/ soll also auch schon ein User/Passwort Popup kommen.

    Ich habe den folgenden Realm in die server.xml eingetragen, damit ich die LDAP Abfrage global habe:

    <Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
    connectionName="cn=testUser,cn=Users,dc=domain,dc= domainEndung"
    connectionPassword="testUserPasswort"
    connectionURL="ldap://192.168.xxx.xxx:389"
    userPassword="userPassword"
    userPattern="cn={0},cn=Users,dc=domain,dc=domainEn dung"
    />

    Nachdem ich zuerst einen Fehler gemacht habe, mir fehlte die ldap.jar (bekam aber keine Fehlermeldung in den Logs!), funktioniert das immer noch nicht. Alle Seite sind einfach so zu erreichen, null authentifierung. Ich bekomme nicht mal ein PopUp, wie beim Apache2, indem ich Username und Passwort eingeben könnte. Leider verstehe ich anscheinend nicht die Syntax durch und durch. Ich schreibe daher mal kurz auf, in wie weit ich das verstanden habe. Vielleicht mache ich ja auch einen Denkfehler.

    -Classname und debug sind klar.

    -connectionName: da der LDAP Server kein anonymes BIND erlaubt gebe ich einen konkreten User per DN an, damit der LDAP Client überhaupt auf den LDAP Server zugreifen kann. (Ist das wirklich nötig? Beim Apache2 muss ich ja auch keinen explizit angeben, bis zum PopUp)

    -connectionPassoword:Passwort des Users, über dem die Verbindung erstellt wird

    -connectionURL ist klar

    -userPassword: wird irgendwie in vielen Beispielen genutzt. Da der sich ja aber per Benutzername und Passwort sich authentifizieren soll, MÜSSTE das ja eigentlich überflüssig sein oder?

    -userPattern: hiermit wird (meiner Meinung nach) angegeben wo der User ( cn={0} -> Platzhalter ) zu finden ist. Momentan sollten sich also nur die User des Zweiges
    domainEndung -> domain -> Users anmelden
    dürfen.

    Es wäre klasse wenn mir da jemand helfen könnte.

    Liebe Grüße
    Jochen

  • #2
    Hallo Jochen,

    hab zwar von LDAP keine Ahnung, aber was hier fehlt ist der Hinweis was in der web.xml steht. Denn hier werden die Security Rollen und die login_config definiert und auf url's gemappt und beim Realm wird nur die Datenbasis (?) für die Authentifizierung definiert.

    lg Dietma

    Comment


    • #3
      Hallo Dietmar,

      ich habe bislang noch gar nichts in der web.xml eingetragen. Hast du vielleicht ein Beispiel wie ich das machen muss ;-) ?

      Gruß
      Joche

      Comment


      • #4
        Hallo Jochen,

        zB:

        <security-constraint>
        <web-resource-collection>
        <web-resource-name>SecurityRestriction</web-resource-name>
        <description>Protect the Cactus redirector servlet.</description>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
        <description>Authorized Users Group</description>
        <role-name>test</role-name>
        </auth-constraint>
        <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
        </security-constraint>

        <login-config>
        <auth-method>BASIC</auth-method>
        </login-config>

        <security-role>
        <description>Test role</description>
        <role-name>test</role-name>
        </security-role>
        <br>
        Ist im Grunde eh alles selbsterklärend.
        Bei der auth-methode gibt es auch noch FROM und DIGEST.
        transport-guarantee NONE bedeutet kein SSL. Wenn kein http-method angegeben, dann werden alle Request Methoden geschützt.<br>

        Ich habe den Realm beim Context definiert. Sollte aber auch unter Host und Engine funktionieren.
        <br>
        Und jetzt solltest Du dann auch Informationen im Log sehen.

        Ich hoffe geholfen zu haben.

        lg Dietma

        Comment


        • #5
          Hallo Dietmar,

          ich habe bislang noch gar nichts in der web.xml eingetragen. Hast du vielleicht ein Beispiel wie ich das machen muss ;-) ?

          Gruß
          Joche

          Comment


          • #6
            Da ist etwas durcheinandergekommen.

            Bitte siehe meine vorige Antwort.

            lg Dietma

            Comment


            • #7
              Hallo Dietmar,

              habe deine Vorschläge befolgt. Bekomme nun auch endlich mein PopUp Fenster. Leider klappt es aber immer noch nicht, das sich User erfolgreich authentifizieren können.

              Darum nun folgende Frage. Falls der User der die Verbindung für den Realm aufgemacht hat, im folgenden Zweig liegt:

              cn=testUser,cn=Users,dc=domain,dc=domainEndung

              und ich diesem User auch das Recht geben möchte auf den geschützten Bereich zuzugreifen, müsste derselbe User sich doch authentifizieren können oder? Gebe das ja per userPattern an, wo er suchen soll.

              Und eine weitere Frage ist: müssen die Rollen vergeben werden?Ich mein ich will einfach das alle Leute den LDAP benutzen müssen, mehr nicht. Keine verschiedenen Usergroups oder dergleichen aufmachen.

              Gruß Joche

              Comment


              • #8
                Jetzt kommen wir in die LDAP Ecke und da schaut es bei mir ganz schlecht aus.

                Ich habe nochmals in meinen Büchern nachgeschaut, aber es geht nur über die Rollen.

                Was ich bei mir gemacht habe ist, daß ich mir einen Realm selber geschrieben habe. Ist nichts dabei. Orientier dich einfach am LDAP Realm.

                lg Dietma

                Comment


                • #9
                  Hallo,

                  nur falls jemand ein ähnliches Problem hat hier noch ein paar Tips:

                  1)Die Rollen die in der web.xml angeben werden, müssen natürlich im LDAP existieren.
                  2) gesucht werden dieser per:
                  roleBase="ou=groups,ou=system"
                  roleName="cn"
                  roleSearch="(uniqueMember={0})"
                  Das bedeutet das die usergroups in "ou=groups,ou=system" gesucht werden und die groupnamen per cn Attribut gesucht werden. Dann wird innerhalb geguckt, ob der User in welchen Gruppen der User unter uniqueMember eingetragen ist. Der User ist dort mit dem DN anzugeben.
                  3)Das aller wichtigste ist aber, das wenn man sich der realm beim bind mit dem ldap server verbindet, das der User root rechte hat. Ansonsten kann der Realm sich nicht durch die Zweige des LDAP's durchhangeln, weil die Berechtigungen fehlen.

                  War ein dumme Sache die ich übersehen hatte. Aber nun läufts. Falls noch jemand fragen hat, kann er sich ja gerne melden.

                  Gruß Jochen

                  Ps: Dietmar: Nochmal vielen Dank für Deine Mühe

                  Comment

                  Working...
                  X