본문 바로가기

others

서블릿 보안 2

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