2013-12-16 6 views
2

아파치에서 사용하는 싱글 사인온 (Single Sign On) 모듈을 대체하려고합니다. 일반적으로이 모듈이 활성화되면, 일단 로그인하면 모듈은 사용자 이름에 HTTP_LOGIN을 설정합니다. 그러나 나는 폴백 옵션이있는 방식으로 웹 서버를 구성하려고합니다. 내 아이디어는 SSO 솔루션이 현재 활성 상태임을 나타내는 Apache 환경 변수에 환경 변수를 설정하는 것이 었습니다. 나는 이것을 검사했고 의도 한대로 작동한다. 웹 응용 프로그램은 새로운 환경 변수를 봅니다.아파치 환경 변수를 조건부로 설정하십시오.

그러나 나는 또한 미리 결정한 값 ("readonly")으로 HTTP_LOGIN을 강제하고 싶다. 무조건 HTTP_LOGIN으로 설정하면 예상대로 작동하지만 을 none으로 설정하면 HTTP_LOGIN을 조건부로 설정해야합니다.

SetEnv SSO_SOLUTION none 
SetEnvIf SSO_SOLUTION ^none$ HTTP_LOGIN=readonly 

이것은 작동하지 않는 것 같지만, Apache documents에서 이해해야합니다. 문서를 잘못 해석했거나 여기에 잘못 구성되어 있습니까?

mod_setenvif이 구성에 구성되어 있습니다 (하지만 실행중인 웹 서버에서도 이중 확인 만 할 수 있습니까?). 로그에 예기치 않은 오류가 없습니다.

플랫폼 : RHEL 6.4

답변

1

문제에 소스 자원에서 검색 나는 Turboflash 수행 우수한 봉투 테스트 매트릭스을 발견했다. 당신이 비어 A_2 환경 변수의 결과에 대한 http://turboflash.wordpress.com/2010/05/27/apache-environment-variables-visibility-with-setenv-setenvif-and-rewriterule-directives/

그리고 정말 흥미로운 것은 일 :

다음은 전체 테스트 매트릭스 게시물입니다.

마지막 행렬에서 Setenv에 의해 설정된 환경 변수는 SetenvIf에서 사용할 수 없다고 말했습니다. 그러나 이것은 SetenvIf (B_2)을 통해 설정된 환경 변수의 경우에는 해당되지 않습니다.

그래서 당신은 Remote_Addr "^"처럼 항상 일치하는 규칙이 방법 SetenvIf 대신 Setenv을 사용하려고한다 :

SetEnvIf Remote_Addr "^" SSO_SOLUTION=none 
SetEnvIf SSO_SOLUTION ^none$ HTTP_LOGIN=readonly 

을 또한 (SSO_SOLUTION 설정에 사용되는 다른 부분에한다 SetEnvIf를 사용하고이 ENV을 변경하지 않는 mod_rewrite로 값, 매트릭스를 확인하십시오).

+0

그건 속임수예요. 하지만 REMOTE_ADDR이 주 아파치 구성에서 설정 될지 확신하지 못해 SERVER_SOFTWARE를 사용했습니다 (REMOTE_ADDR을 테스트하지는 않았습니다). – jippie

관련 문제