Tomcat 6.0으로 폼기반 인증방식을 적용해보겠습니다.
Web.xml(DD)에 다음과 같이 항목을 추가하였습니다.
서블릿 보안 첫번째 포스팅에서 적용한 DD파일에서 추가된 부분은 회색으로 색칠되어 있습니다.
<!-- 컨테이너가 가지고 있는 사용자와 역할 가져오기 -->
<security-role>
<role-name>tester</role-name>
</security-role>
<!-- 인증 활성화 하기 BASIC, DIGEST, CLIENT-CERT, FORM방식이 존재함 -->
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/loginPage.jsp</form-login-page>
<form-error-page>/loginError.jsp</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<web-resource-collection>
<!-- 사용하는 이름, 특별하게 사용되지는 않음 -->
<web-resource-name>test web resource</web-resource-name>
<!-- 제약을 걸 자원 -->
<url-pattern>/*</url-pattern>
<!-- 제약을 걸 HTTP 메소드 -->
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<!-- 정의된 자원을 호출할수 있는 역할 -->
<auth-constraint>
<role-name>tester</role-name>
</auth-constraint>
<!-- 데이터 기밀성 및 무결성 정의, 값은 NONE, INTEGRAL, CONFIDENTIAL 이 존재함. -->
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
이제 테스트용으로 사용할 test1.jsp를 다음과 같이 작성합니다.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test1.jsp</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
test1.jsp<br/>
login이 성공하면 아래 값이 보임..<br/>
<ul>
<li>request.getRemoteUser() : <%=request.getRemoteUser() %></li>
<li>request.isUserInRole("tester") : <%=request.isUserInRole("tester") %></li>
</ul>
</body>
</html>
form-login-config에서 정의한 두파일을 작성합니다.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>loginPage.jsp</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
please login~
<!-- 컨테이너와 협업하기 위한 로그인 폼의 액션명은 j_security_check이어야 함 -->
<form method="POST" action="j_security_check">
<!-- 아래 두개의 컨트로롤 이름도 꼭 이이름을 사용하여아함 -->
<input type="text" name="j_username">
<input type="password" name="j_password">
<input type="submit" value="로그인">
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>loginError.jsp</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
Sorry~
</body>
</html>
브라우저로 해당 컨텍스트에 존재하는 모든자원(<url-pattern>/*</url-pattern>, 지금 여기서는 테스트를 위해 test.1.jsp로 접근합니다.) 에 접근하면 다음과 같이 인증화면이 나타납니다.
conf/tomcat-users.xml에 정의된대로 tester 역할에 해당하는 아이디와 비밀번호를 넣으면 인증이 성공하면 다음 화면을 볼 수 있습니다.
인증 실패 화면입니다.
'others' 카테고리의 다른 글
Log4j의 additivity 옵션 (0) | 2008.01.07 |
---|---|
서블릿 보안 3 (0) | 2007.11.22 |
서블릿 보안 1 (0) | 2007.11.22 |
개발 Flow Chart (0) | 2007.10.26 |
jeus 5.0 설정 파일 (1) | 2007.09.21 |