Announcement

Collapse
No announcement yet.

Tomcat 5.5, Realms - Welcher User?

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

  • Tomcat 5.5, Realms - Welcher User?

    Hallo,

    ich arbeite mich gerade in Tomcat 5.5.23 und Realms ein, bin also noch Newbee in dem Bereich.
    Für mich würde der Basic-Machanismus mit XML-Datei (tomcat-users.xml) reichen.
    Habe mich bereits in Tutorials in das Thema eingelesen, jedoch stellt sich mir noch eine Frage:

    Nach erfolgreicher Authorsierung für eine Web-Ressource, wie komme ich an den User, der sich authorisiert hat?
    Also wenn ich z.B. eine Rolle mit UserA, UserB und UserC als Mitglieder habe und sich UserB einloggt, wie komme ich nun an den Usernamen UserB?

    Gibt es so etwas wie getUser() o.ä.?

    Danke für jede Art von Hilfe!

  • #2
    Ja, gibt es: Zunächst musst Du an das zum Request gehörende HttpServletRequest-Objekt rankommen (http://tomcat.apache.org/tomcat-5.5-...etRequest.html), z.B. in der doGet-Methode Deines Servlets:

    Code:
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        java.security.Principal principal = request.getUserPrincipal();
        if(principal != null) {
            String username = principal.getName();
            // usw. usf.
        }
    }
    (JavaDoc: http://java.sun.com/j2se/1.4.2/docs/...Principal.html).

    Gruß.
    Hendrik

    Comment


    • #3
      Danke, aber

      Hallo Hendrik,

      danke für Deine Antwort. Habe inzwischen auch noch Informationen gefunden, dass es mit request.getRemotUser() geht, habe das auch getestet, es klappt.
      Worin liegt nun Unterscheid zwischen

      request.getUserPrincipal();

      und

      request.getRemoteUser();

      ?

      Danke für weitere Hilfe!

      Comment


      • #4
        Ich verstehe die Servlet-Spec so:

        request.getRemoteUser() entspricht der CGI-Variablen REMOTE_USER. Dort bekommst Du nur einen not-null value, wenn der Browser die Credentials tatsächlich mit den Request mitgeschickt hat. Das wiederum hängt davon ab, welche Authentisierungsmethode Du verwendest. Bei Basic Authentication dürfte das für jeden Request zutreffen, bei Form based Authentication müsste man es mal ausprobieren.

        Im Gegensatz dazu ist der Principal wohl immer vorhanden, wenn der User authentisiert ist. Damit wärst Du also immer auf der sicheren Seite, auch wenn Du später mal die Authentisierungs-Methode wechselst.

        Gruß
        Hendrik

        Comment


        • #5
          Danke Hendrik! ;-)

          Comment

          Working...
          X