2015-01-17 2 views
0

받는 토큰을 기반으로 환경 변수를 설정하는 공급 업체 Apache 모듈 (PingFederate)이 있습니다. 환경 변수의 값을 기반으로 디렉토리에 대한 액세스를 제어하려고합니다. , [PF_AUTH_SUBJECT] => 아론 [PF_AUTH_GROUPS] => CN = Application.E18.Users, OU = 내부 로컬 DC = CN = Application.E17.Users :환경 변수 값을 기반으로 한 Apache ACL

예를 들어, 모듈은 다음과 같이 변수를 설정 OU = Internal, DC = local

그룹 CN = Application.E18 ...의 사용자 만 액세스 할 수 있도록 디렉터리를 보호하려고합니다. 내 위치 방향은 다음과 같습니다.

<Location /example_app> 
    SetEnvIf %{PF_AUTH_GROUPS} ^.*CN=Application.E18.Users.*$ ALLOWED 
    AuthName "ACL PingFederate restricted" 
    AuthType PFApacheAgent 
    Order Deny,Allow 
    Deny from all 
    Allow from all 
</Location> 

이것은 작동하지 않는 것 같습니다. 나는 시도했다 : 작동

SetEnvIf %{PF_AUTH_GROUPS} ^.*CN=Application.E18.Users.*$ ALLOWED 
SetEnvIf %{PF_AUTH_GROUPS} ^.*Application.*$ ALLOWED 
SetEnvIf %{PF_AUTH_GROUPS} ^.*A.*$ ALLOWED 

있는 유일한 방법은 다음과 같습니다 분명히 작동하지 않습니다

SetEnvIf %{PF_AUTH_GROUPS} ^.*$ ALLOWED 

.

https://issues.apache.org/bugzilla/show_bug.cgi?id=25725 SetEnvIf는 환경 변수를 테스트하지 않지만 http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html의 문서에는 "요청과 관련된 환경 변수 목록"이 언급되어 있습니다. 나는 또한이를 사용하여 mod_rewrite를 시도했습니다

: 허용되는 환경 변수가 설정되지 않은 이러한 경우 모두에서

RewriteEngine On 
<Location /example_app> 
    RewriteCond %{PF_AUTH_GROUPS} ^.*Application.E18.Users.*$ 
    RewriteRule - [E=ALLOWED:1] 
    AuthName "ACL PingFederate restricted" 
    AuthType PFApacheAgent 
    Order Deny,Allow 
    Deny from all 
    Allow from all 
</Location> 

.

답변

2

당신은 mod_pf에 의해 생성 된 헤더를 활용 할 수 있도록 전 후 후자가 실행 이후 mod_rewrite, 2 번 실행 확인해야합니다 :

RewriteEngine On 
RewriteCond %{ENV:REDIRECT_PASS} !1 
RewriteRule .* $1 [L,E=PASS:1] 

RewriteCond %{HTTP:PF_AUTH_GROUPS} !^.*ECN.*$ 
RewriteRule .* $1 [L,R=401] 

이것은 또한 여기에 설명되어 있습니다 : https://ping.force.com/Support/PingIdentityArticle?id=kA340000000Gs7bCAC

관련 문제