La variabile AUTH_USER

Utilizzando php c’e’ la possibilita’ di poter avere nella variabile
AUTH_USER l’utente che si autentica attraverso il servizio di
autenticazione di apache, il web server.
Utilizzando uno script ruby la variabile ENV[“AUTH_USER”] non viene
valorizzata.
In che modo posso recuperare l’informazione relativa all’utente
autenticato?

On Gio, Maggio 31, 2007 13:35, Mauro S. wrote:

Utilizzando php c’e’ la possibilita’ di poter avere nella variabile
AUTH_USER l’utente che si autentica attraverso il servizio di
autenticazione di apache, il web server.
Utilizzando uno script ruby la variabile ENV[“AUTH_USER”] non viene
valorizzata.
In che modo posso recuperare l’informazione relativa all’utente
autenticato?

Probabilmente stai utilizzando apache con mod_proxy verso la tua
applicazione esposta con mongrel/webrick. In questa situazione io ho
utilizzato questa configurazione di apache (assieme a quella di
mod_proxy
che non riporto per brevità):

<Location /mount_point_applicazione >
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader add X-Forwarded-User %{RU}e

In questo modo, la richiesta che apache rigira contiene anche l’header
X-Forwarded-User, valorizzato con l’utente autenticato tramite apache.

Ciao,
Nico

Il giorno gio, 31/05/2007 alle 14.09 +0200, Domenico Delle S. ha
scritto:

applicazione esposta con mongrel/webrick. In questa situazione io ho
utilizzato questa configurazione di apache (assieme a quella di mod_proxy
che non riporto per brevità ):

Non sto utilizzando mod_proxy.
Lo script in ruby e’ un semplicissimo cgi passato ad apache.

Il giorno gio, 26/07/2007 alle 13.49 +0200, Roberto De Ioris ha scritto:

autenticato?
caldo mi abbia fritto le sinapsi
Nemmeno, insomma non c’e’ modo di sapere quale sia lo user che si
autentica attraverso il meccanismo di autenticazione di apache?

Nemmeno, insomma non c’e’ modo di sapere quale sia lo user che si
autentica attraverso il meccanismo di autenticazione di apache?

fai il dump della richiesta http.

Ciao

Il giorno gio, 26/07/2007 alle 13.02 +0200, Mauro S. ha scritto:

Probabilmente stai utilizzando apache con mod_proxy verso la tua
applicazione esposta con mongrel/webrick. In questa situazione io ho
utilizzato questa configurazione di apache (assieme a quella di mod_proxy
che non riporto per brevità ):

Non sto utilizzando mod_proxy.
Lo script in ruby e’ un semplicissimo cgi passato ad apache.

A me risulta che la variabile sia REMOTE_USER ma non escludo che il
caldo mi abbia fritto le sinapsi

Il giorno ven, 27/07/2007 alle 09.33 +0200, Domenico Delle S. ha
scritto:

Nemmeno, insomma non c’e’ modo di sapere quale sia lo user che si
autentica attraverso il meccanismo di autenticazione di apache?

fai il dump della richiesta http.

cioe’? con tcpdump per esempio? e poi?

Il giorno ven, 27/07/2007 alle 09.04 +0200, Mauro S. ha scritto:

In che modo posso recuperare l’informazione relativa all’utente
A me risulta che la variabile sia REMOTE_USER ma non escludo che il
caldo mi abbia fritto le sinapsi

Nemmeno, insomma non c’e’ modo di sapere quale sia lo user che si
autentica attraverso il meccanismo di autenticazione di apache?

Confermo e’ REMOTE_USER, AUTH_USER e’ una variabile che aggiunge php

Questo semplice cgi ruby mi restituisce il nome dell’utente loggato con
l’autenticazione Basic di apache:

puts
puts
puts ENV[‘REMOTE_USER’]

Se non ti funziona andrei a controllare nell’access_log se viene
riportato lo user

Il giorno ven, 27/07/2007 alle 09.53 +0200, Mauro S. ha scritto:

smtp.send_message msg, from, to

message="#{nominativo}\t#{mail}\n\ninserito da:
#{ENV[“REMOTE_USER”]}\ncollegato da: #{ENV[“REMOTE_ADDR”]}"

Boh…

Guarda fatti una inspect di ENV cosi’ vedi cosa contiene e sai se il
problema e’ di ruby o di apache (sicuro che non stai usando qualche
wrapper cgi che cancella alcune env per sicurezza ? tipo cgiwrap)

Il giorno ven, 27/07/2007 alle 09.25 +0200, Roberto De Ioris ha scritto:

valorizzata.

l’autenticazione Basic di apache:

puts
puts
puts ENV[‘REMOTE_USER’]

Se non ti funziona andrei a controllare nell’access_log se viene
riportato lo user

Nell’access_log lo user viene riportato, mi funziona la variabile
ENV["“REMOTE_ADDR”] ma non ENV[“REMOTE_USER”].
E’ un messaggio di posta che invio:

smtp.send_message msg, from, to

message="#{nominativo}\t#{mail}\n\ninserito da:
#{ENV[“REMOTE_USER”]}\ncollegato da: #{ENV[“REMOTE_ADDR”]}"

Boh…

Il giorno ven, 27/07/2007 alle 10.01 +0200, Roberto De Ioris ha scritto:

ENV["“REMOTE_ADDR”] ma non ENV[“REMOTE_USER”].
Guarda fatti una inspect di ENV cosi’ vedi cosa contiene e sai se il
problema e’ di ruby o di apache (sicuro che non stai usando qualche
wrapper cgi che cancella alcune env per sicurezza ? tipo cgiwrap)

Fatta l’inspect e della variabile REMOTE_USER nemmeno l’ombra :frowning:

Fatta l’inspect e della variabile REMOTE_USER nemmeno l’ombra :frowning:

Allora devi mandare la tua configurazione dell’autenticazione Basic,
faccio fatica a credere che sia un problema di configurazione (non e’
che puoi disabilitare le ENV cgi da apache cosi’ facilmente) credo
piuttosto che ci sia un errore di logica nella tua applicazione (tipo
che viene eseguita fuori dal reame di autenticazione)

E come e’ possibile?
Mi connetto in https, do user e password e mi si apre una pagina con una
form, al submit faccio partire la startRequest() ajax che non fa altro
che lanciare un semplice cgi in ruby.

Il giorno ven, 27/07/2007 alle 10.58 +0200, Mauro S. ha scritto:

Mi connetto in https, do user e password e mi si apre una pagina con una
form, al submit faccio partire la startRequest() ajax che non fa altro
che lanciare un semplice cgi in ruby.

e comunque la inspect di ENV avrebbe dovuto darmi la REMOTE_USER, magari
vuota, invece non c’e’ proprio questa variabile.

Il giorno ven, 27/07/2007 alle 10.46 +0200, Mauro S. ha scritto:

Nell’access_log lo user viene riportato, mi funziona la variabile

Guarda fatti una inspect di ENV cosi’ vedi cosa contiene e sai se il
problema e’ di ruby o di apache (sicuro che non stai usando qualche
wrapper cgi che cancella alcune env per sicurezza ? tipo cgiwrap)

Fatta l’inspect e della variabile REMOTE_USER nemmeno l’ombra :frowning:

Allora devi mandare la tua configurazione dell’autenticazione Basic,
faccio fatica a credere che sia un problema di configurazione (non e’
che puoi disabilitare le ENV cgi da apache cosi’ facilmente) credo
piuttosto che ci sia un errore di logica nella tua applicazione (tipo
che viene eseguita fuori dal reame di autenticazione)

Il giorno ven, 27/07/2007 alle 10.58 +0200, Mauro S. ha scritto:

Mi connetto in https, do user e password e mi si apre una pagina con una
form, al submit faccio partire la startRequest() ajax che non fa altro
che lanciare un semplice cgi in ruby.

E’ facile basta che hai definito la tua autenticazione per /var/www in
una direttiva e poi il cgi magari e’ in /usr/lib/cgi-bin

Comunque se non mandi la tua configurazione di apache la vedo dura :slight_smile:

Il giorno ven, 27/07/2007 alle 11.02 +0200, Mauro S. ha scritto:

E come e’ possibile?
Mi connetto in https, do user e password e mi si apre una pagina con una
form, al submit faccio partire la startRequest() ajax che non fa altro
che lanciare un semplice cgi in ruby.

e comunque la inspect di ENV avrebbe dovuto darmi la REMOTE_USER, magari
vuota, invece non c’e’ proprio questa variabile.

Assolutamente, se non sei in un reame di autenticazione REMOTE_USER non
viene definita

Il giorno ven, 27/07/2007 alle 11.07 +0200, Mauro S. ha scritto:

E come e’ possibile?
Mi connetto in https, do user e password e mi si apre una pagina con una
form, al submit faccio partire la startRequest() ajax che non fa altro
che lanciare un semplice cgi in ruby.

E’ facile basta che hai definito la tua autenticazione per /var/www in
una direttiva e poi il cgi magari e’ in /usr/lib/cgi-bin

In effetti e’ cosi’ :frowning:

Bene ora sai dove andare a parare :slight_smile:

Ti conviene spostare i cgi dentro /var/www/admin e aggiungere

Options ExecCGI alla direttiva per /var/www/admin

Il giorno ven, 27/07/2007 alle 11.07 +0200, Mauro S. ha scritto:

SSLCertificateFile /etc/apache2/ssl/apache.pem
AllowOverride All
AuthUserFile “/etc/apache2/users.db”
AuthName “Area riservata”
require valid-user

Ma quindi devo mettere le stesse direttive che ho sotto /var/www/admin
anche sotto /usr/lib/cgi-bin?

Il giorno ven, 27/07/2007 alle 09.03 +0000, Roberto De Ioris ha scritto:

E come e’ possibile?
Mi connetto in https, do user e password e mi si apre una pagina con una
form, al submit faccio partire la startRequest() ajax che non fa altro
che lanciare un semplice cgi in ruby.

E’ facile basta che hai definito la tua autenticazione per /var/www in
una direttiva e poi il cgi magari e’ in /usr/lib/cgi-bin

In effetti e’ cosi’ :frowning:

Comunque se non mandi la tua configurazione di apache la vedo dura :slight_smile:

<VirtualHost *:443>
ServerName srv
DocumentRoot /var/www
ErrorLog /var/log/apache2/error_log
TransferLog /var/log/apache2/access_log

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch

<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all

<Directory /var/www/admin>
AllowOverride None
Order deny,allow
deny from all
Allow from 192.168.5.86
AuthType Basic
AuthUserFile “/etc/apache2/users.db”
AuthName “Area riservata”
require valid-user

Il giorno ven, 27/07/2007 alle 11.11 +0200, Roberto De Ioris ha scritto:

In effetti e’ cosi’ :frowning:

Bene ora sai dove andare a parare :slight_smile:

Ti conviene spostare i cgi dentro /var/www/admin e aggiungere

Options ExecCGI alla direttiva per /var/www/admin

Sicuro che questo non mi crei problemi di sicurezza?
Ci sara’ un motivo perche’ debian ha deciso di mettere i cgi
sotto /usr/lib/cgi-bin.