아파치 웹서버에서 Mod_auth_external을 이용하여 인증하기. ( 오라클 DB와 연동 )
이 글은 김태양님의 제공하에 http://www.apache.kr.net 에 등록되어 졌습니다.
* 오라클이 기본으로 설치되었다고 간주하고 , 아파치 웹서버만 새로 설치하는 것으로 진행하겠습니다
1. Mod_Auth_External를 다운로드 받는다.
http://www.wwnet.net/~janc/mod_auth_external.html
2. 특정 디렉토리에 압축된 파일을 푼다. ( 예제 /opt/mod_auth )
3. 아파치 웹서버 소스 디렉토리로 이동한 후 configure를 다음과 같이 한다.
./configure --enable-rule=SHARED_CORE --enable-module=so --prefix=/opt/apache --add-module=/opt/src/mod_auth_external.c *
* 경우에 따라 디렉토리가 달라질 수도 있다.
4. make
5. make install
6. 사용자 인증을 하기 위해 proc( 다른것을 이용하여도 상관 없음 )를 이용한 인증 프로그램을 제작한다.
예제 Source
#include <stdio.h>
#define USERNAME "xxxt"
#define PASSWORD "xxxt"
#define DBSTRING "xxx"
EXEC SQL BEGIN DECLARE SECTION;
char *username = USERNAME;
char *password = PASSWORD;
char *dbstring = DBSTRING;
char *szid , *szpw;// id와 password를 받을 변수를 설정
int i_count=0; // 해당 id와 password가 맞는지 확인하는 flag
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE sqlca;
/*/////////////////////////////////////////////////////*/
void sqlerror();
int cgiMain ( void ) {
/*//////////////////Set Environment///////////////////*/
putenv("ORACLE_HOME=/oracle/home");
putenv("ORACLE_SID=xxx");
putenv("NLS_LANG=American_America.ko16ksc5601");
putenv("LD_LIBRARY_PATH=/oracle/homelib");
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC ORACLE OPTION(RELEASE_CURSOR=YES);
EXEC ORACLE OPTION(HOLD_CURSOR=NO);
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbstring; // 오라클 접속
/*///////// Get Parameter //////////////////////////*/
szid = getenv("HTTP_EXTAUTH_USER"); // user id를 입력받는다.
szpw = getenv("HTTP_EXTAUTH_PASS"); // user password 를 입력받는다.
EXEC SQL SELECT count(*) INTO :i_count FROM neonet_users WHERE id = :szid and passwd = :szpw; // id,password가 맞는지 확인
if ( i_count != 0 ) return 0; /* 인증 통과 */
else return -1; /* 인증 실패 */
}
void sqlerror() {
EXEC SQL WHENEVER SQLERROR CONTINUE;
fprintf(cgiOut, "ORACLE Error detected: \n");
fprintf(cgiOut, "% .70s \n", sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK WORK RELEASE; exit(1);
}
7. 완성된 프로그램 (auth )을 컴파일 한 후 특정 디렉토리에 옮겨놓는다. ( 예제 /opt/apache/bin )
8. 아파치에서 basic auth를 이용하여 디렉토리 인증을 하기 위해서 다음과 같이 설정을 한다.
Httpd.conf파일을 연 후
AddExternalAuth auth /opt/apache/bin/auth
위와 같이 auth라는 이름으로 /opt/apache/bin/auth실행 파일을 지정한 후
<Directory /opt/apache/htdocs/test/>
AuthType Basic
AuthExternal auth
AuthName "ID와 PASSWORD를 입력하여 주세요"
require valid-user
</Directory>
/opt/apache/htdocs/test라는 디렉토리를 인증하기 위해서 위와 같이 설정을 하면 인증을 수행할 수 있다.
디렉토리가 아니고 특정 파일만을 인증하고 싶을경우에는 다음과 같이 하면 된다. ( /opt/apache/htdocs/test/test.html 을 인증하려고 한다. )
<Location /test/test.html>
AuthType Basic
AuthExternal auth
AuthName "ID와 PASSWORD를 입력하여 주세요"
require valid-user
</Location>
9. 설정을 다 한후 웹서버를 재가동 하면 된다.
기타 문의 사항은 http://henry.neonet.co.kr 에 오셔서 글을 올려주세요.
|