Realm을 database로 설정해보겠습니다. 서블릿 보안관련 두번째 포스팅의 예제를 그대로 활용하겠습니다.
사용할 table을 다음과 같이 생성합니다.
CREATE TABLE users (
user_name VARCHAR(15) NOT NULL PRIMARY KEY,
user_pass VARCHAR(15) NOT NULL
);
CREATE TABLE user_roles (
user_name VARCHAR(15) NOT NULL,
role_name VARCHAR(15) NOT NULL,
PRIMARY KEY (user_name, role_name)
);
생성된 table에 data를 입력합니다.
INSERT INTO users (user_name, user_pass)
VALUES ('aircook', 'aircook');
INSERT INTO users(user_name, role_name)
VALUES ('aircook', 'tester' );
COMMIT ;
Tomcat의 server.xml에 있는
<Realm
className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
을 아래와 같이 수정합니다. 위의 resourceName은 <GlobalNamingResources>에 선언되어 있습니다.
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@***.***.***.***:1521:orcl"
connectionName="scott" connectionPassword="tiger" userTable="users"
userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
tomcat을 재기동한후 테스트를 하면 잘 동작합니다.
Tomcat 데이터소스를 이용할려면 server.xml에 <GlobalNamingResources>안에 다음과 같이 데이터소스를 정의하고
<Resource name="jdbc/authority" auth="Container"
type="javax.sql.DataSource" description="database connection"
maxActive="100" maxIdle="30" maxWait="10000"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@ ***. ***. ***.***:1521:orcl" username="scott"
password="tiger" />
Realm정보를 다음과 같이 수정하면 됩니다.
<Realm className="org.apache.catalina.realm.DataSourceRealm"
debug="99" dataSourceName="jdbc/authority" userTable="users"
userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
FF에서도 잘 동작합니다.
자세한 내용은 HOW-TO문서를 통해 보실 수 있습니다.
http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html
다음엔 시간을 많이 내어서 Spring 공부시 스쳐 지나갔던 Acegi Security Framework를 공부해봐야겠다는 생각이 많이듭니다. 언제 할라나…..ㅡ.ㅡ;
'others' 카테고리의 다른 글
Logging in Tomcat with Log4j (0) | 2008.04.18 |
---|---|
Log4j의 additivity 옵션 (0) | 2008.01.07 |
서블릿 보안 2 (0) | 2007.11.22 |
서블릿 보안 1 (0) | 2007.11.22 |
개발 Flow Chart (0) | 2007.10.26 |