Announcement

Collapse
No announcement yet.

User aus tomcat-user.xml durch Webapp lesen

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

  • User aus tomcat-user.xml durch Webapp lesen

    Hallo,

    wir haben eine App im Einsatz, die im tomcat6 läuft. Jetzt haben wir den Anspruch, dass eine weitere Anwendung auf die tomcat-user.xml zugreift um zu schauen ob der übergebene Username dort vorhanden ist. Passwort interessiert mich in diesem Kontext nicht! Es liegt eh im MD5 Hash vor.

    Da die Webapp im eigenen Kontext läuft könnte ich mir vorstellen, dass das nicht geht. Die Suche bei Google ergab dazu auch kleine vielversprechende Lösungen.

    Grüße und Danke

  • #2
    Würde da ja eher die Tomcat -API nutzen http://tomcat.apache.org/tomcat-7.0-doc/api/
    Christian

    Comment


    • #3
      Hallo Christian,

      mit folgendem habe ich das schon probiert:

      Code:
       
      MemoryRealm mr = new MemoryRealm();
      nur leider kann ich mir dort nicht die User anzeigen lassen.

      Grüße

      Comment


      • #4
        Standardkonfiguration
        <Realm className="org.apache.catalina.realm.UserDatabaseR ealm"
        resourceName="UserDatabase"/>


        Vesuch es mit

        http://tomcat.apache.org/tomcat-7.0-...rDatabase.html
        Zuletzt editiert von Christian Marquardt; 29.10.2013, 16:37.
        Christian

        Comment


        • #5
          Hallo Christian,

          also in der server.xml steht bei mir:

          <Realm className="org.apache.catalina.realm.UserDatabaseR ealm"
          resourceName="UserDatabase" digest="MD5"/>

          Das MD5 sollte aber eigentlich nicht stören.

          Leider erhalte ich mit folgendem Code keine Ausgabe. Der Iterator ist "leer":

          Code:
           
          MemoryUserDatabase test = new MemoryUserDatabase();
                                  
          Iterator test2 = test.getUsers();
                                  
          for (Iterator ob = test2; ob.hasNext(); ) {
            String text = (String) ob.next();
            System.out.println(text);
          }
          Grüße

          Comment


          • #6
            Was sollte auch in einer neuen Instanz drin sein?
            Ich weiss nicht wie man an die laufende Instanz kommt, mal in der API stöbern
            Christian

            Comment


            • #7
              Hi,

              danke für den Hinweis. Habe nun dei Lösung:

              Code:
               
              Reference refToCurrentTomcatUserDatabase = new Reference("org.apache.catalina.UserDatabase");
              refToCurrentTomcatUserDatabase.add(new StringRefAddr("pathname", "conf/tomcat-users.xml"));
              MemoryUserDatabase memoryUserDatabase = (MemoryUserDatabase) new MemoryUserDatabaseFactory().getObjectInstance(refToCurrentTomcatUserDatabase, new CompositeName("UserDatabase"), null, null);
              
              User user = memoryUserDatabase.findUser(userId);
              
              if(user != null)
              {   
                  Iterator userRoles = user.getRoles();
              
                  for (Iterator i = userRoles; i.hasNext(); ) {
                      MemoryRole userRole = (MemoryRole) i.next();
              
                      if(userRole.getRolename().equals("admin"))
                      {
                          return userId;
                      }
                  }
              }
              grüße und Danke

              Comment


              • #8
                Schön, dass es geht
                Christian

                Comment

                Working...
                X