IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Restreindre acces à tomcat


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    Points : 127
    Points
    127
    Par défaut Restreindre acces à tomcat
    Bonjour,

    Voici le contexte de ma demande :

    J'ai un serveur cas (sso CAS) et dans ce serveur CAS je veut empêcher certains utilisateurs de faire appel à un service (une servlet) serviceValidate, pour se faire dans le serveur.xml de mon tomcat6 j'ai ajouté un context ayant comme path /CAS/serviceValidate et dedans j'ai mis un remoteAddrValve.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    <Host name="www.ogh-site.fr"  appBase="webapps"
    		unpackWARs="true" autoDeploy="true">
     
    	<Context path="/CAS/serviceValidate" reloadable="true">
    			 <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="213\.56\.106\.193|"/></Context>
     
     
    </Host>
    Cette méthode fonctionne sauf que quand je la met en place l'appel à serviceValidate est complétement bloqué, quelle que soit l'ip source l'appel au service échoue.


    Vue que ca ne machais pas j'ai essayé de faire la même chose dans le context.xml de l'appli mais même en faisant cela tout est bloqué.

    Cela fait plus d'un mois que je fais des tests dans tout les sens et de toute évidence les valves ne fonctionnent pas (d’ailleurs même sur internet je n'ai trouvé personne ayant réussi à les faire fonctionné).

    Si je touche à tomcat c'est parce que je ne peux pas modifier le code de CAS car c'est un jar et le jour ou ce jar sera remplacé on va tout perdre.

    Avez vous une autre solution à me proposer?

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    J'imagine que tu peux toujours restreindre l'accès directement dans ta servlet. Après cela implique que ce droit particulier soit chargé dans ta session utilisateur ou bien géré via un header d’authentification par exemple.

    J'ai fais quelque chose qui pourrait peut être t'aider. Ça me sert pour accéder à une servlet d'administration pour mon serveur Jackrabbit. L'authentification se fait via le header ""Authorization", par contre cela requiert une connexion SSL car les login/mdp sont simplement encodé en base 64.

    Grosso modo ça donne ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public abstract class AbstractRemoteAdministrationServlet extends HttpServlet
    {
     
            protected void service( HttpServletRequest request, HttpServletResponse response )
    				 throws ServletException, IOException
    	{
    		try
    		{
    			if( !checkForAuthorization( request ) ) // Ma méthode d'authentification
    			{
    				response.sendError( HttpServletResponse.SC_UNAUTHORIZED );
    				return;
    			 }
     
    			super.service( request, response );
    		}
    		catch( LoginException e )
    		{
    			response.sendError( HttpServletResponse.SC_UNAUTHORIZED, e.getMessage() );
    		}
    		catch( RepositoryException e )
    		{
    			response.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage() );
    		}
    	}
     
           // Ça c'est mon code d'authentification mais à toi de faire ce que tu veux ici
           protected boolean checkForAuthorization( HttpServletRequest request )
    				 throws LoginException, RepositoryException, ServletException
    	{
    		Repository repository = RepositoryAccessServlet.getRepository( getServletContext() );
     
    		BasicCredentialsProvider credProvider = new BasicCredentialsProvider( HeadersConstants.HTTP_HEADER_AUTHORIZATION );
     
    		Credentials credentials = credProvider.getCredentials( request );
     
    		session = repository.login( credentials );
     
    		return true;
    	}
     
    }
    Après il te reste plus qu'a faire hériter ta servlet de cette classe et toute tes méthodes HTTP passeront automatiquement par cette authentification.

    Cdt.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 143
    Points : 127
    Points
    127
    Par défaut
    Merci pour ton aide Nico02.

    Justement ce qui rend mon problème si compliqué à résoudre c'est que je ne peux pas modifier la servlet. Elle est propre au sso CAS et pour la modifier il faudrait que je récupère les codes sources de CAS, que je mette à jour le code et que je refasse un jar.

Discussions similaires

  1. acces à tomcat par le reseau local en WIFI
    Par aldo-tlse dans le forum Mobiles
    Réponses: 3
    Dernier message: 08/05/2010, 12h07
  2. Probleme d'accès à Tomcat manager
    Par m4rcellus dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 10/11/2009, 13h36
  3. Problème d'accès à Tomcat Manager
    Par cotede2 dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 27/04/2009, 19h25
  4. Réponses: 3
    Dernier message: 24/05/2007, 00h19
  5. logger les accès à Tomcat
    Par julien-blaise dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 17/01/2007, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo