# tomcat passwort login



## nameac (29. Jan 2007)

hallo,

ich verwalte die inhalte einer internet seite die auf einem tomcat-server aufbaut, d. h. ich bin nicht fähig für mein problem ein kleines servlet zuschreiben weil ich nicht weiß wo ich das einbinden muss. 

mein problem:

ich soll auf der seite dateien zur verfügung stellen die nur für authorisierte benutzer zugänglich sind, nach ein wenig googeln stieß ich auf folgenden lösungsansatz man erweitert den <security-constraint> in der web.xml und die tomcat-user.xml.

wenn ich jetzt eine geschützte datei öffnen will kommt auch der dialog <form-login-page>/login.jsp</form-login-page>

meine login.jsp sieht so aus:

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<form method="POST" action='<%= response.encodeURL("downloadpfad") %>' >
  <table border="0" cellspacing="5">
    <tr>
      <th align="right">Bitte User-Name eingeben:</th>
      <td align="left"><input type="text" name="j_username"></td>
    </tr>
    <tr>
      <th align="right">Bitte Passwort eingeben:</th>
      <td align="left"><input type="password" name="j_password"></td>
    </tr>
    <tr>
      <td align="right"><input type="submit" value="Login"></td>
      <td align="left"><input type="reset"></td>
    </tr>
  </table>
</form>
```

allerdings funtioniert folgendes nicht:

1. ich kann beliebige username und passwort angaben machen und erverlinkt immer auf den angegebenen pfad
 <%= response.encodeURL("pfad") %> 

2. wenn ich den pfad zur datei angebe incl. dateiname dann erscheint die login.jsp aufs neue


----------



## Anselmus (29. Jan 2007)

wieso brauchst login.jsp?

machs du mit basic auth contraint...


----------



## KSG9|sebastian (30. Jan 2007)

Natürlich leitet er immer auf den pfad weiter, da du dein Formular ja dahin postest.
Das ganze muss so aufgebaut sein:

In der web.xml kannst du bestimmte Ordner/Dateien über security-constriants definieren. Diese Dateien sind dann nur für die angegebene Rolle zuständig. In der web.xml musst du dann eine AUTH-Methode definieren (BASIC oder FORM). Bei Basic passt dass dann automatisch, bei FORM musst du dein Formular an das entsprechende Servlet vom Tomcat weiterleiten. Weiß grad nicht wie das heißt, steht aber in der Tomcat Docu unter "JAAS".


----------



## nameac (30. Jan 2007)

ja das mit dem basic hätte ich noch gerne ausprobiert allerdings ist unter <login-config> schon form definiert wurden um error mit der error.jsp abzufangen und ich habe nicht gesehen das man zwei <login-config> erstellen kann weil keinerlei bezüge gemacht werden woran man entscheiden könnte welches modul benutzt werden soll.


```
<security-constraint>
    <display-name>A Configuration Security Constraint</display-name> 
    <web-resource-collection>
      <web-resource-name>Protected Area</web-resource-name>       
       
      <url-pattern>*.html</url-pattern>
      <url-pattern>*.class</url-pattern>
      <url-pattern>*.java</url-pattern>
      <url-pattern>*.ser</url-pattern>
      <url-pattern>*.xml</url-pattern>
       
      <url-pattern>/work/*</url-pattern>
      <url-pattern>/htdocs/menue/*</url-pattern>
      <url-pattern>/htdocs/frames/*</url-pattern>
      <url-pattern>/htdocs/error/*</url-pattern>
     


       

    </web-resource-collection>
    <auth-constraint>
      <role-name>authUser</role-name> 
      
      <role-name>meinRollenName</role-name>

    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>A Server Configuration Form-Based Authentication Area</realm-name>
    <form-login-config>
      
      <form-login-page>/error.jsp</form-login-page> 
      
      
     <form-error-page>/error.jsp</form-error-page>  
    
    </form-login-config>
  </login-config>

  <security-role>
    <role-name>authUser</role-name> 
 
  </security-role>
  
<!--<security-role>
      <role-name>meinRollenName</role-name>
   </security-role>-->
```
meinrollen name und die auskommentierten tags sind von mir, bei <security-role> hab ich nur mal die 2 verschiedenen sachen ausprobiert.


----------

