Problème authentification

Questions sur les problèmes d'intégration de Tomcat avec Apache (mod_jk, mod_jk2...).

Modérateur : Modérateurs

Avatar de l’utilisateur
arN34
Nouveau membre
Messages : 6
Inscription : lun. 18 sept. 2006, 19:41

Messagepar arN34 » ven. 29 sept. 2006, 15:08

Hello !

Tout d'abord, je tiens à préciser que j'ai posté ce message dans les forums Apache et Tomcat car je ne sais pas si le problème vient de mod_rewrite ou de mod_jk.

Voici mon problème :

J'ai un serveur Apache qui sert en intranet à accéder à une application web hébergée sur un serveur Tomcat couplé.
Je veux ouvrir un accès internet à ce serveur et bien sûr je veux utiliser l'authentification pour ne permettre qu'à des utilisateurs enregistrés d'accéder au serveur.
Par contre, pour les utilisateurs du réseau, je ne veux pas d'authentification.

J'y vais pas à pas, pour m'assurer que tout fonctionne avant de rajouter une couche de complexité :

1) mise en place du couplage Apache/Tomcat :
LoadModule jk_module modules/mod_jk.so
#
# Mod_jk settings
#
JkWorkersFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/workers.properties"
JkLogFile "C:/Program Files/Apache Software Foundation/Apache2.2/logs/mod_jk.log"
JkLogLevel warning
JkMount /commandes default
JkMount /commandes/* default
# End of mod_jk settings

=> ça marche (http://localhost/monappli est redirigé vers l'application Tomcat) !


2) mise en place d'hotes virtuels pour rediriger les utilisateurs vers l'application web (mon serveur Apache ne contient rien en lui même) :
NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
#Nous redirigeons les requetes sans application précisée vers commandes
#(les autres iront à l'application demandée)
RewriteEngine On
RewriteRule ^/$ <a href='http://monserveur.dyndns.org/commandes' target='_blank'>http://monserveur.dyndns.org/commandes</a> [R,L]

</VirtualHost>


<VirtualHost *:443>
#Activation de SSL
SSLEngine On
SSLCertificateFile conf/newcert.pem
SSLCertificateKeyFile conf/nopwkey.pem

#Nous redirigeons les requetes sans application précisée vers commandes
#(les autres iront à l'application demandée)
RewriteEngine On
RewriteRule ^/$ <a href='https://monserveur.dyndns.org/commandes' target='_blank'>https://monserveur.dyndns.org/commandes</a> [R,L]

</VirtualHost>

=> ça marche, mes accès à <a href='http://localhost' target='_blank'>http://localhost</a> et <a href='https://localhost' target='_blank'>https://localhost</a> sont redirigés vers l'application Tomcat


3) mise en place d'une authentification http basic dans <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"> :
L'accès reste géré par :
Order allow,deny
Allow from all

Et je met en place une directive pour l'authentification :
AuthUserFile auth/.htpasswd
AuthName "Accès Sécurisé"
AuthType Basic
Require valid-user

=> je n'ai aucune authentification : Apache me renvoie direct sur l'appli web


3 bis) je teste en créant un dossier vhost1 dans htdocs (avec une page d'index personnalisée) et en supprimant la redirection vers ma webapp dans le virtualhost :
<VirtualHost *:80>
#Nous redirigeons les requetes sans application précisée vers PharmaJ
#(les autres iront à l'application demandée)
#RewriteEngine On
#RewriteRule ^/$ <a href='http://ph-portes-mer.dyndns.org/PharmaJ' target='_blank'>http://ph-portes-mer.dyndns.org/PharmaJ</a> [R,L]
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/vhost1"

</VirtualHost>

=> l'authentification marche, la fenêtre de login apparaît !


4) mise en place de la directive Satisfy pour permettre un accès sans authentification depuis le réseau local

=> à faire quand l'étape précédente marchera ;-)


Voyez mon httpd.conf dans le post suivant.

Comment se fait-il que dès que je mets en place une réécriture d'URL avec mod_rewrite, l'authentification est squizzée ?

Merci d'avance

--
Arnaud

Avatar de l’utilisateur
arN34
Nouveau membre
Messages : 6
Inscription : lun. 18 sept. 2006, 19:41

Messagepar arN34 » ven. 29 sept. 2006, 15:09

PS : voici mon httpd.conf (épuré des commentaires inutiles) :

# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
ThreadsPerChild 250
MaxRequestsPerChild 0

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"

#
# Listen
Listen 80
Listen 443

#
# Dynamic Shared Object (DSO) Support
#
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule headers_module modules/mod_headers.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule status_module modules/mod_status.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule jk_module modules/mod_jk.so

#
# Mod_jk settings
#
JkWorkersFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/workers.properties"
JkLogFile "C:/Program Files/Apache Software Foundation/Apache2.2/logs/mod_jk.log"
JkLogLevel warning
JkMount /commandes default
JkMount /commandes/* default
# End of mod_jk settings


# 'Main' server configuration
#
ServerAdmin ph-portes-mer@club-internet.fr

ServerName ph-portes-mer.dyndns.org

DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny
Allow from all

AuthUserFile auth/.htpasswd
AuthName "Accès Sécurisé"
AuthType Basic
Require valid-user

</Directory>


#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>

#
# ErrorLog: The location of the error log file.
ErrorLog logs/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
LogLevel warn

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>

#
# The location and format of the access logfile (Common Logfile Format).
CustomLog logs/access.log common

</IfModule>

<IfModule alias_module>
ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"

</IfModule>


<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>


DefaultType text/plain

<IfModule mime_module>

TypesConfig conf/mime.types


AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

</IfModule>



# Supplemental configuration

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>




# Config des hotes virtuels pour l'accès à distance

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
#Nous redirigeons les requetes sans application précisée vers commandes
#(les autres iront à l'application demandée)
RewriteEngine On
RewriteRule ^/$ <a href='http://monserveur.dyndns.org/commandes' target='_blank'>http://monserveur.dyndns.org/commandes</a> [R,L]

</VirtualHost>


<VirtualHost *:443>
#Activation de SSL
SSLEngine On
SSLCertificateFile conf/newcert.pem
SSLCertificateKeyFile conf/nopwkey.pem

#Nous redirigeons les requetes sans application précisée vers commandes
#(les autres iront à l'application demandée)
RewriteEngine On
RewriteRule ^/$ <a href='https://monserveur.dyndns.org/commandes' target='_blank'>https://monserveur.dyndns.org/commandes</a> [R,L]

</VirtualHost>

Avatar de l’utilisateur
bgarnier
Membre ancien
Membre ancien
Messages : 180
Inscription : mer. 04 févr. 2004, 12:45
Localisation : Ile de france

Messagepar bgarnier » mer. 25 oct. 2006, 23:09

Bonjour,

Je pense que la solution pour toi c'est d'utiliser un hébergement virtuel par adresse.

Dans le fichier de configuration principal d'apache à savoir httpd.conf vers la fin de celui-ci rajoute une directive de contenaire <VirtualHost @ip>. par exemple:
<VirtualHost 192.168.0.2:80>
serverName <le nom de ton serveur>
serverAdmin <ton adresse email>
ErrorLog logs/http-error.log
CustomLog logs/http-access.log common
</VirtualHost>

Ainsi les requêtes arrivant sur le port 80 et correspondant à l'adresse IP de ton interface seront gérés à l'intérieur de cet hôte virtuel.

Pour ce qui concerne le port 443, il suffit de faire de même mais dans le fichier de configuration ssl.conf ou il suffit de définir un hôte virtuel ayant la même adresse IP mais ecoutant sur le port 443, à l'intérieur de cet hôte rajoute les différentes directives comme SSLEngine On etc..

Cordialement Benoit


Revenir vers « Intégration Apache »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité