[JSP] 시큐리티
시큐리티
1. 시큐리티란?
- 허가된 사용자만이 접근할 수 있도록 제한하는 보완 기능
2. 프로세스?
- 사용자가 웹 페이지에 접근
- JSP 컨테이너(Tomcat)는 요청된 페이지에 보안 제약(Constraints)이 있는지 확인
- 사용자에게 인증(authentication)을 요청
- 권한 부여(authorization) : JSP 컨테이너는 사용자가 해당 페이지에 접근할 수 있는지 확인. 승인
3. 역할?
- 사용자가 권한이 없는 데이터에 접근하는 것을 막음
- 스니핑(sniffing) : 웹 공격자가 전송 데이터를 중간에 가로채는 것을 방지
4. 그래서 시큐리티란?
- 허가된 사용자만이 특정 웹 페이지에 접근할 수 있도록 제한하는 보안 기능
- 사용자가 권한이 없는 데이터에 접근하는 것을 막아줌
- 웹 공격자가 전송 데이터를 중간에 가로채는 것을 방지(스니핑)
5. 선언적 시큐리티
- web.xml 파일(웹 애플리케이션(JSPBook) 배포 설명자)에 보안 구성을 작성하여 수행
- 보안 역할(role), 보안 제약 사항(contraint), 인증 처리(login.jsp, login-failed.jsp) 설정
1) tomcat-users.xml 설정
role : 권한
tomecat이라는 권한을 가진 tomcat이름의 사용자
2-1) JSPBook에 있는 web.xml 설정 - BASIC 인증 처리 기법
<security-role>
<role-name>role1</role-name><!-- 권한 -->
</security-role>
<security-constraint>
<web-resource-collection><!-- 권한을 부여할 페이지 설정 -->
<web-resource-name>JSPBook</web-resource-name>
<!-- 접근을 제한할 요청 경로 -->
<url-pattern>/ch10/security01.jsp</url-pattern>
<!-- 이 요청은 아무나 못한다. role1 권한을 가지는 user만 사용가능하다. -->
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint> <!-- 역할과 페이지를 연결 -->
<description></description><!-- role1이 이 페이지와 무슨 관련이 있는지 기술 -->
<!-- 권한이 부여된 role 이름 -->
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- 시큐리티 인증 설정 -->
<login-config><!-- 페이지에 접근하려면 로그인을 해라 -->
<!-- BASIC 인증 처리 기법으로 설정 -->
<auth-method>BASIC</auth-method><!-- 아이디 비밀번호 입력하는 창 -->
</login-config>
=> /ch10/security01.jsp 페이지에서 role1의 권한을 가진 user만 페이지를 사용 가능하게 됨
결과 화면
2-2) FORM 기반 인증 처리 기법
- login config에서 FORM 기반 인증 처리 기법으로 설정
<security-role>
<role-name>role1</role-name><!-- 권한 -->
</security-role>
<security-constraint>
<web-resource-collection><!-- 권한을 부여할 페이지 설정 -->
<web-resource-name>JSPBook</web-resource-name>
<!-- 접근을 제한할 요청 경로 -->
<url-pattern>/ch10/security01.jsp</url-pattern>
<!-- 이 요청은 아무나 못한다. role1 권한을 가지는 user만 사용가능하다. -->
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint> <!-- 역할과 페이지를 연결 -->
<description></description><!-- role1이 이 페이지와 무슨 관련이 있는지 기술 -->
<!-- 권한이 부여된 role 이름 -->
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- 시큐리티 인증 설정 -->
<login-config><!-- 페이지에 접근하려면 로그인을 해라 -->
<!-- BASIC 인증 처리 기법으로 설정 -->
<!-- <auth-method>BASIC</auth-method>아이디 비밀번호 입력하는 창 -->
<!-- FORM 기반 인증 처리 기법으로 설정 -->
<auth-method>FORM</auth-method>
<form-login-config>
<!-- 인증 처리를 위한 로그인 페이지 설정 -->
<form-login-page>/ch10/login.jsp</form-login-page>
<!-- 인증 실패 시 오류 페이지 설정 -->
<form-error-page>/ch10/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
결과 화면
login.jsp
<!-- 시큐리티 역할 role1 관리 시작 -->
<security-role>
<role-name>role1</role-name><!-- 권한 -->
</security-role>
<security-constraint>
<web-resource-collection><!-- 권한을 부여할 페이지 설정 -->
<web-resource-name>JSPBook</web-resource-name>
<!-- 접근을 제한할 요청 경로 -->
<url-pattern>/ch10/security01.jsp</url-pattern><!-- 이 요청은 아무나 못한다. role1 권한을 가지는 user만 사용가능하다. -->
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint> <!-- 역할과 페이지를 연결 -->
<description></description><!-- role1이 이 페이지와 무슨 관련이 있는지 기술 -->
<!-- 권한이 부여된 role 이름 -->
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- 시큐리티 인증 설정 -->
<login-config><!-- 페이지에 접근하려면 로그인을 해라 -->
<!-- BASIC 인증 처리 기법으로 설정 -->
<!-- <auth-method>BASIC</auth-method>아이디 비밀번호 입력하는 창 -->
<!-- FORM 기반 인증 처리 기법으로 설정 -->
<auth-method>FORM</auth-method>
<form-login-config>
<!-- 인증 처리를 위한 로그인 페이지 설정 -->
<form-login-page>/ch10/login.jsp</form-login-page>
<!-- 인증 실패 시 오류 페이지 설정 -->
<form-error-page>/ch10/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- 시큐리티 역할 role1 관리 끝 -->
3) admin role 만들기
<!-- 시큐리티 역할 admin 관리 시작 -->
<security-role>
<description></description>
<role-name>admin</role-name><!-- 권한 -->
</security-role>
<!-- 시큐리티 제약 사항 설정 -->
<security-constraint>
<display-name>JSPBook Security</display-name>
<web-resource-collection>
<web-resource-name>JSPBook</web-resource-name>
<!-- 접근을 제한할 요청 경로 -->
<url-pattern>/ch04/addProduct.jsp</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint> <!-- 역할과 페이지를 연결 -->
<description>권한 관리자 아이디</description><!-- role1이 이 페이지와 무슨 관련이 있는지 기술 -->
<!-- 권한이 부여된 role 이름 -->
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<!-- 시큐리티 인증 설정 -->
<login-config><!-- 페이지에 접근하려면 로그인을 해라 -->
<!-- BASIC 인증 처리 기법으로 설정 -->
<!-- <auth-method>BASIC</auth-method>아이디 비밀번호 입력하는 창 -->
<!-- FORM 기반 인증 처리 기법으로 설정 -->
<auth-method>FORM</auth-method>
<form-login-config>
<!-- 인증 처리를 위한 로그인 페이지 설정 -->
<form-login-page>/ch04/login.jsp</form-login-page>
<!-- 인증 실패 시 오류 페이지 설정 -->
<form-error-page>/ch04/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- 시큐리티 역할 admin 관리 끝 -->
Author And Source
이 문제에 관하여([JSP] 시큐리티), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gksmf6699/JSP-시큐리티저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)