Announcement

Collapse
No announcement yet.

Jaas Web-Benutzeranmeldung

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

  • Jaas Web-Benutzeranmeldung

    Hallo, <br>
    und zwar habe ich folgendes Problem: Ich suche eine geeignete Dokumentation, um meine Web-Anwendung zu sichern.<br>
    Ich will die Benutzer und das Passwort in einer Oracledatenbank ablegen und auch von dort wieder holen. Ich benutze den Jboss und weiß auch eigentlich gar nicht was ich für xml´s benötige, was ich überhaupt tun soll.
    Habe im Internet mal nach Dokus gesucht, wurde aber immer nur halb erklärt.
    <br><br>Vielen Dank schon mal für die Hilfe<br>
    Gruß Ronny

  • #2
    Hallo Ronny,

    In der "Free Online JBoss Documentation", Kapitel 8, "Security on JBoss" ist alles komplett beschrieben. Um darauf zugreifen zu können muß man sich (kostenlos) auf der JBoss-Seite registrieren und einloggen. Folgende Seite ist auch ganz gut http://www.ociweb.com/jnb/jnbJul2002.html

    Leider ist die Doku sehr komplex und die Konfiguration ist zu umfangreich, als das ich das im Detail hier beschreiben kann. Daher nur kurz:

    1. Im web.xml wird definiert, welche Rollen Zugriff auf welche Seiten haben und welche Login-Methode benutzt wird. Ein Beispiel ist form-based login, das einfach mit zwei Feldern j_username und j_password auf einer JSP arbeitet. Das ist J2EE-Standard, such mal in Google, da findest Du zig Beispiele.

    2. Definition der Security-Domain im File jboss-web.xml
    <PRE>
    &lt;security-domain&gt;java:/jaas/mydomain&lt;/security-domain&gt;
    </PRE>

    3. Anlegen zweier Datenbanktabellen mit jeweils zwei Spalten (Username und Rolle, Username und Password).

    4. Im File conf/login-config.xml einen application-policy Eintrag für mydomain machen. Als LoginModule org.jboss.security.auth.spi.DatabaseServerLoginMod ule benutzen. Benötigt werden JNDI-Name der DataSource, Query zum abfragen der Rollen und Query zum abfragen der Passwörter

    <PRE>
    &lt;module-option name="dsJndiName"&gtjava:/MyDS&lt;/module-option&gt;
    &lt;module-option name="principalsQuery"&gt;select password from usertable where username=?&lt;/module-option&gt;
    &lt;module-option name="rolesQuery"&gt;select userroles 'Roles' from roletable where username=?&lt;/module-option&gt;

    </PRE>

    Das wars. Näheres in der JBoss-Online-Doku.

    Gruß,

    Alwi

    Comment


    • #3
      Danke wiedermal für die schnelle Hilfe.<br> Wie sieht das eigentlich aus, wenn das Passwort nach 90 Tagen ablaufen soll und man bei der Anmeldung dann gleich das neue Passwort eingeben soll und es auch anschließend in der Datenbank geändert werden soll. Soll ich da lieber meine eigene Benutzeranmeldung und Benutzerverwaltung schreiben, oder gibt es da schon Dinge in JAAS.
      <br>
      Gruß<br>
      Ronn

      Comment


      • #4
        Hallo Ronny,

        Ich denke das mußt Du selber implementieren. Die Standard-LoginModule vom JBoss geben das AFAIK nicht her, ev. gibt es aber irgendwo was fertiges. Ehrlich gesagt programmiere ich mir das Login auch meistens selbst. Das läuft dann auch problemlos in jedem anderen Server und ist meist einfacher :-)

        Man kann übrigens jederzeit dem JBoss die Credentials übergeben, die man in der eigenen Implementierung überprüft hat (ist aber natürlich wieder JBoss-spezifisch):

        <PRE>
        SecurityAssociation.setPrincipal(username);
        SecurityAssociation.setCredential(password.toCharA rray());
        </PRE>

        Gruß,

        Alwi

        Comment


        • #5
          Hallo,<br>
          <br>
          dann habe ich das Problem der Effektivität:
          Nehme ich ein Servlet, Filter oder Bean. Kann mich immer nicht richtig entscheiden was für was am sinnvollsten ist. Habe leider nie einen J2EE-Kurs belegt.<br>
          <br>
          Gruß<br>
          <br>
          Ronn

          Comment


          • #6
            Wenn der User die Login-Daten auf einer Webseite eingibt, kommst Du um ein Servlet oder Filter nicht drumrum :-) Ob dann der eigentliche Login (also die DB-Abfrage) aus einer EJB heraus erfolgt, würde ich davon abhängig machen, ob Du ohnehin schon EJBs in Deiner Anwendung hast. Bei kleinen Webanwendungen kann man gut auf EJB verzichten, finde ich. Du kannst ja die DB-Zugriffe in einer DAO-Klasse kapseln. Je nach Anforderung kannst Du das DAO dann aus einem Servlet oder Session-Bean heraus aufrufen.

            Gruß,

            Alwi

            Comment

            Working...
            X