tomcat 7 Formulaire d'authentification
donné une Servlet HelloServlet:
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public HelloServlet() {
//TODO Auto-generated constructor stub
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//TODO Auto-generated method stub
System.out.print("hello my Friend: " + request.getRemoteUser());
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("This is the Test Servlet");
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
out.print("<br/>Header Name: <em>" + headerName);
String headerValue = request.getHeader(headerName);
out.print("</em>, Header Value: <em>" + headerValue);
out.println("</em>");
}
}
....
}
avec une déclaration de tomcat politique de sécurité dans web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>my application</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>tomcat</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login-failed.jsp</form-error-page>
</form-login-config>
</login-config>
et tomcat-rôles de définitions conf/tomcat-users.xml
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
le monde "server.xml" est:
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
,J'ai essayé d'accéder à la Servlet "HelloServlet" avec l'url localhost/jsfWorkgroup/HelloServlet.
comme prévu, je suis (re)dirigé vers la page d'identification:
<form method="POST" action="j_security_check">
<table>
<tr>
<td colspan="2">Login to the Tomcat-Demo application:</td>
</tr>
<tr>
<td>Name:</td>
<td><input type="text" name="j_username" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="j_password"/ ></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Go" /></td>
</tr>
</table>
</form>
N'importe qui à l'id de Jeton que j'ai utilisé:
- nom d'utilisateur:tomcat mot de passe:tomcat
- nom d'utilisateur:mot de passe à la fois:tomcat
J'ai encore venir à l'échec /de connexion a échoué.jsp.
ici est mon point de vue sur ce: tomcat agit sur me diriger vers la page de connexion, mais ne les lisent pas conf/tomcat-users.xml pour valide mon login(même après plusieurs redémarrages).
qu'en pensez-vous ?
configuration: Tomcat 7.0.23, Eclipse Indigo
J'ai mis à jour ma réponse en conséquence
Double-vérifier les commentaires dans
conf/tomcat-users.xml
: tout est commenté pour empêcher tout accès, dans une configuration par défaut.
OriginalL'auteur arthur | 2012-07-08
Vous devez vous connecter pour publier un commentaire.
la suite de la proposition de @pd40 j'ai essayé les exemples/jsp/la sécurité/la protection des exemples, mais pas dans l'IDE Eclipse où Tomcat est généralement intégré avec les autres serveurs (Glassfish, JBoss, ect..) , plutôt j'ai commencé le serveur tomcat comme autonome (dans son répertoire /bin) .. et là ça fonctionne.
mais quand c'est attemped pour exécuter la sécurité en fonction d'applications Web Tomcat dans Eclipse, il n'a pas, encore une fois, à l'aide de la configuration décrite ci-dessus.
Je ne sais pas si je suis de droite mais de Web-Sécurité de l'Application est prise en charge uniquement lorsque tomcat fonctionne en dehors d'eclipse..
OriginalL'auteur arthur
Le tomcat exemple web.xml comprend la section suivante ci-dessous
<login-config>
:dont vous pourriez avoir besoin.
Tomcat inclut un exemple de guerre qui contient une authentification à l'aide de tomcat-users.xml similaire à ce que vous essayez. Si d'accueil de tomcat/webapps/exemples est déployé essayez d'accéder à http://localhost/examples/jsp/security/protected/. Assurez-vous que les commentaires XML autour du rôle de l'utilisateur section de tomcat-users.xml ont été supprimés. Ils sont commentés par défaut.
Vous pouvez envisager de se cogner la la journalisation pour aider à diagnostiquer la auth question.
Est votre de connexion.jsp affichage j_username & j_password dans le champ de formulaire?
oui ... la page de Connexion a eu aussi dans la question ci-dessus ajoutée..
J'ai essayé les exemples/jsp/sécurité/protection de l'localement. Cela n'a pas fonctionné jusqu'à ce que je l'onu, a commenté le rôle et la section de l'utilisateur. Juste vérifier. Vous avez probablement déjà fait..
+1 pour les exemples/jsp/sécurité/protected/. en effet, il a fonctionné comme prévu, mais seulement quand je déployer la webapp Guerre à l'extérieur de l'éclipse dans le stand-alone de tomcat... j'ai donc commencé à réfléchir et à ...
OriginalL'auteur pd40
C'est trop tard pour moi de répondre, mais peut-être que quelqu'un ici peut trouver cela utile.
En fait, si vous êtes confrontés au problème de ne pas obtenir la configuration de tomcat à travailler par le biais de l'éclipse et l'exécution en dehors d'elle, puis il suffit de supprimer le serveur à partir d'eclipse onglet serveurs et ajouter à nouveau. Ceci devrait résoudre le problème.
Vous pouvez simplement mettre à jour votre conf de tomcat dans les "Serveurs" projet créé automatiquement par Eclipse. Mise à jour tomcat-users.xml par exemple et redémarrez Tomcat. Il devrait fonctionner correctement.
OriginalL'auteur Prasad Kharkar
Vous avez restreint l'accès à votre contenu par
la définition garantis dans les pages web.xml:
que le générique est utilisé en référence à toutes les pages de contenu de chemin.
Afin de vous obtenir un verbe à l'infinitif boucle de redirection vers la page de connexion.
Vous devez séparer le contenu par défaut de l'application qui doit être garanti à partir de login et "loginerror" de la page, il suffit de les placer dans des répertoires différents. Pour l'exemple de contenu de /travail/ et connectez-vous, "loginerror" dans /loginPages/. Bien sûr, vous avez à changer web.xml paramètres respectivement.
OriginalL'auteur WojtekSZ
J'ai découvert que si vous modifiez la configuration d'utilisateurs dans le tomcat-users.xml qui est intégré dans eclipse, vous devez redémarrer eclipse pas seulement le serveur pour que les nouveaux utilisateurs à être reconnu. Je suppose que eclipse met en cache les tomact-user.xml fichier.
OriginalL'auteur Alex Theedom