아파치 업그레이드 후 발생한 문제를 디버그하려고합니다. redmine을 내 아파치 인증/액세스 제어에 통합하려고합니다. 여기 Apache 2.4 디버그 PerlAuthenHandler
내 아파치 설정입니다 :<Location "/git/">
AuthType Basic
AuthName "Git Access"
Require valid-user
Order deny,allow
Allow from all
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler
...
그리고 이것은 액세스/authen 핸들러 : 당신이 볼 수 있듯이
sub access_handler {
my $r = shift;
unless ($r->some_auth_required) {
$r->log_reason("No authentication has been configured");
return FORBIDDEN;
}
return OK unless request_is_read_only($r);
my $project_id = get_project_identifier($r);
$r->log_error("Setting Auth to OK") if is_public_project($project_id, $r) && anonymous_role_allows_browse_repository($r);
$r->log_error("Content: " . $r->get_handlers("PerlAuthenHandler"));
$r->set_handlers(PerlAuthenHandler => [\&ok_authen_handler])
if is_public_project($project_id, $r) && anonymous_role_allows_browse_repository($r);
return OK
}
sub ok_authen_handler {
my $r = shift;
$r->log_error("ok_authen_handler()...");
my ($res, $redmine_pass) = $r->get_basic_auth_pw();
return OK;
}
sub authen_handler {
my $r = shift;
$r->log_error("authen_handler() ...");
my ($res, $redmine_pass) = $r->get_basic_auth_pw();
return $res unless $res == OK;
if (is_member($r->user, $redmine_pass, $r)) {
$r->log_error("Auth succeeded");
return OK;
} else {
$r->log_error("Auth failed...");
$r->note_auth_failure();
return DECLINED;
}
}
는, 액세스 처리기가 일부 더미 방법으로 인증 핸들러를 재설정 인증이 필요하지 않은 경우. 이론적으로 이는 선택적 익명 액세스를 허용합니다. 실제로
, 아파치 2.4는 오류 얻을 수 있지만 : 나는 set_handlers 문을 주석을 해제하는 경우 이미 액세스 처리기에서 해킹에 문제를 못을 박았다
AH00027: No authentication done but request not allowed without authentication for $PATH. Authentication not configured?
을, 나는 레드 마인에 대해 인증 할 수 있습니다. 그래서 나는이 "해킹"에 잘못된 것이 있다고 생각합니다. 불행히도 나는 정말로 perl 녀석이 아니므로 더 이상 문제를 조사하는 방법을 모른다.
"해킹 된"제어 흐름 (즉, 인증 핸들러를 프로그래밍 방식으로 설정)과 정상적인 제어 흐름 간의 중요한 차이점을 파악할 수있는 방법이 있습니까?
내 문제가 너무 고쳐졌습니다. 그러나 이것이 보안 위반 사항을 만든다면 걱정할 필요가 있습니까?이 수정 사항 이후 보안 결함을 발견 했습니까? – Ganesh