Localizando o usuário atual autenticado pela autenticação básica (Apache)

4

Quando você faz login através de uma página de autenticação básica, o nome de usuário que você autenticou está armazenado em qualquer lugar (no servidor ou na máquina cliente), talvez em uma variável de ambiente?

Plano de fundo : tenho uma página de administração da Web comum para um servidor de e-mail e gostaria de saber quem está fazendo o quê. Quando um usuário efetua login com êxito por meio da autenticação básica, eu de alguma forma quero poder identificá-los e registrar suas ações. Portanto, toda vez que uma solicitação é enviada, posso gravar em um arquivo de log. O formato básico seria:

$username ran a $function against $useraccount

então, se um usuário alterou as permissões de alguém, por exemplo:

Admin-Bob ran a permission change against User-Scott

Portanto, se ocorrerem erros, posso rastrear facilmente no arquivo de log quais ações levam à causa. Eu tentei verificar o hash %ENV sem sucesso, alguma idéia?

Eu realmente não quero entrar em sessões semelhantes a PHP, porque isso significaria eliminar minha autenticação básica, o que me dá um bom grau de controle já. Se eu tiver que codificar algo com sessões, precisaria implementar um sistema para bloquear usuários após tentativas máximas e assim por diante, o que eu realmente não quero codificar. Eu acho que isso é melhor voltado para serverfault porque pertence ao Apache mais do que a linguagem de programação. As sessões podem ser feitas em vários idiomas.

    
por RHELAdmin 18.06.2010 / 15:57

3 respostas

9

O nome de usuário estará disponível na variável de ambiente REMOTE_USER .

Isso funciona para quase todos os métodos de autenticação, caso você comece a usar a autenticação digest ou talvez mesmo kerberos.

    
por 18.06.2010 / 16:28
3

Shtééf já mencionou $ENV{'REMOTE_USER'} , mas se você estiver usando CGI.pm, ele também será retornado pela função remote_user() .

my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name
    
por 18.06.2010 / 17:30
0

Na verdade, é uma variável de servidor, não de ambiente.

PHP_AUTH_USER e AUTH_USER devem funcionar.

    
por 18.06.2010 / 16:16