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 ^/$ http://monserveur.dyndns.org/commandes [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 ^/$ https://monserveur.dyndns.org/commandes [R,L]

</VirtualHost>

=> ça marche, mes accès à http://localhost et https://localhost 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 ^/$ http://ph-portes-mer.dyndns.org/PharmaJ [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

PS : voici mon httpd.conf (épuré des commentaires inutiles) :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
 
# 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 ^/$ http://monserveur.dyndns.org/commandes [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 ^/$ https://monserveur.dyndns.org/commandes [R,L]
 
</VirtualHost>