기본 인증(Apache)으로 인증된 현재 사용자 찾기

기본 인증(Apache)으로 인증된 현재 사용자 찾기

기본 인증 페이지를 통해 로그인할 때 인증한 사용자 이름이 환경 변수 등 어느 곳에나 저장되어 있습니까?

배경: 이메일 서버에 대한 공통 웹 관리 페이지가 있는데 누가 무엇을 하고 있는지 알고 싶습니다. 사용자가 기본 인증을 통해 성공적으로 로그인하면 어떻게든 사용자를 식별하고 작업을 기록할 수 있기를 원합니다. 따라서 요청이 제출될 때마다 로그 파일에 쓸 수 있습니다. 기본 형식은 다음과 같습니다.

$username ran a $function against $useraccount

따라서 사용자가 다른 사람의 권한을 변경한 경우, 예:

Admin-Bob ran a permission change against User-Scott

따라서 오류가 발생하면 어떤 작업이 원인이 되었는지 로그 파일에서 쉽게 추적할 수 있습니다. 해시를 확인해 보았지만 %ENV아무 소용이 없었습니다. 어떤 아이디어가 있습니까?

나는 PHP와 같은 세션에 들어가고 싶지 않습니다. 왜냐하면 그렇게 하면 이미 상당한 수준의 제어권을 제공하는 기본 인증을 폐기해야 하기 때문입니다. 세션을 사용하여 무언가를 코딩해야 한다면 최대 시도 후에 사용자를 차단하는 시스템을 구현해야 하는데, 실제로는 코딩하고 싶지 않습니다. 나는 이것이 프로그래밍 언어보다 Apache와 더 관련이 있기 때문에 serverfault에 더 적합하다고 생각합니다. 세션은 다양한 언어로 진행될 수 있습니다.

답변1

사용자 이름은 환경 변수에서 사용할 수 있습니다 REMOTE_USER.

이는 다이제스트 또는 Kerberos 인증을 사용하기 시작하는 경우 거의 모든 인증 방법에 적용됩니다.

답변2

Shtééf는 이미 언급했지만 $ENV{'REMOTE_USER'}CGI.pm을 사용하는 경우 함수에서도 반환됩니다 remote_user().

my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name

답변3

실제로는 환경이 아닌 서버 변수입니다.

PHP_AUTH_USER 및 AUTH_USER가 모두 작동해야 합니다.

관련 정보