티스토리 뷰
Seurity 보안
- 시큐리티 개요
- 선언적 시큐리티 처리
- 프로그래밍적 시큐리티 처리
- 시큐리티 개요
: 시큐리티는 허가된 사용자만이 특정 웹 페이지에 접근할 수 있도록 제한하는 보안 기능
과정 - 사용자가 웹 페이지에 접근시 JSP 컨테이너는 요청된 페이지에 보안 제약이 있는지 확인, 사용자 인증 요구
접근할 수 있는지 확인하여 승인하는 것 = 권한 부여 (Authorization)
##시큐리티 처리방법
- 선언적 시큐리티 : 코드 작성 없이 web.xml 파일에 보안 구성을 작성하여 사용자의 인증을 수행하는 방식
- 프로그래밍적 시큐리티 : request 내장 객체의 메소드를 통해 사용자의 권한 부여를 처리하는 프로그래밍 방식
## 웹 서버에 역할과 사용자 구성하기
: 웹 애플리케이션의 인증과 권한 부여를 위해 톰캣 서버에 사용자와 역할을 쉽게 생성하고 구성할 수 있다.
tomcat-users.xml 파일에 사용자의 역할이 구성되어 있다.새로운 사용자를 추가하기 위해서 xml 파일의 주석을 제거하고 설정한다.
- 선언적 시큐리티 처리
: 선언적 시큐리티는 웹 애플리케이션 배포 설명자 web.xml 파일에 보안을 구성하여 수행한다.
## security 역할 설정하기
: 웹에 사용하는 역할을 나열하는 요소 <security-role> / 해당 요소는 web.xml 파일에 구성
<security-role>
<role-name>역할 이름</role-name>
</security-role>
역할 이름 은 반드시 tomcat-users.xml 에 등록된 역할과 사용자여야 한다.
## security 제약 사항 설정하기
: 사용자의 요청 URL에 대한 접근 권한을 정의하는 데 사용되는 형식. / web.xml 파일에 접근 권한 내용을 구성
<security-constraint>
<web-resource-collection> ... </web-resource-collection>
<auth-constraint> .... </auth-constraint>
<user-data-constraint> ... </auth-constraint>
<security-constraint>
- <web-resource-collection> : 웹 자원에 대한 접근을 설정
- <web-resource-collection> : 웹 자원의 이름을 설정
- <url-pattern> : 접근 제한을 요청할 url 목록을 설정
- <auth-constraint> : 웹 자원에 접근할 수 있는 인증된 사용자 설정
- <description> : 설명
- <role-name> : 권한이 부여된 사용자의 이름 (대소문자 나눔)
- <user-data-constraint> : 데이터 전송 시 데이터 보호를 설정
## security 인증 설정하기
: 인증 처리를 위한 로그인 페이지나 오류 페이지 호출. / web.xml 파일에 인증 관련 내용을 구성
<login-config>
- <auth-method> : 웹 자원에 대한 인증 처리 방식을 설정
- BASIC : 웹 자원을 보호하는 간단하고 일반적인 방법
- DIGEST : 암호화 메커니즘을 이용하여 전송 ()
- FORM : 폼 페이지를 이용하여 로그인 정보를 서버에 전송
- CLIENT-CERT : 인증서를 가지고 공인 키 인증 방식을 사용하여 로그인
- <realm-name> : 웹 자원에 접근할 수 있는 인증된 사용자 설정
- <form-login-config> : 데이터 전송 시 데이터 보호를 설정
- <form-login-page> : 로그인 페이지 설정
- <form-error-page> : 에러 페이지 설정
=====tomcat-users.xml====
<role rolename="tomcat" />
<role rolename="role1" />
<user username="tomcat" password="tomcat1234" roles="tomcat" />
<user username="both" password="both1234" roles="tomcat,role1" />
=====web.xml======
<security-role>
<role-name>role1</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPBook</web-resource-name>
<url-pattern>/ch10/Excercise/security1.jsp</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description></description>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<form-login-config>
<auth-method>FORM</auth-method>
<form-login-page>로그인 페이지</form-login-page>
<form-error-page>로그인 오류 페이지</form-error-page>
</form-login-config>
</login-config>
- /프로그래밍적 시큐리티 처리
: 보안을 위해 코드를 작성하여 사용자의 권한 부여를 처리하는 방식. / 보안으로 충분하지 않을 때 request 내장 객체의 메서드를 사용하여 사용자를 승인하는 방법
메서드 | 형식 | 설명 |
getRemoteuser | String | 사용자의 인증 상태를 반환 |
getAuthType() | String | 서블릿을 보호하는 데 사용되는 인증 방식의 이름 |
isUserInRole() | boolean | 인증된 사용자에게 설정되어 있는 역할이 있는지 확인 |
getProtocol() | String | 웹 브라우저의 요청 프로토콜을 가져옴 |
isSecure | boolean | 웹 에서 https 요청으로 request가 들어왔는지 확인 |
getUserPrinciple() | Principle | 인증한 사용자의 이름 포함 객체 반환 |
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Security</title>
</head>
<body>
<p> 사용자명 : <%=request.getRemoteUser() %>
<p> 인증방법 : <%=request.getAuthType() %>
<p> 인증한 사용자명이 역할명 'tomcat'에 속하는 사용자인가? <%=request.isUserInRole("tomcat") %>
<p> 인증한 사용자명이 역할명 'role1'에 속하는 사용자인가? <%=request.isUserInRole("role1") %>
</body>
</html>
'학교공부 > JSP' 카테고리의 다른 글
chapter - 14 (cookie) (0) | 2021.05.17 |
---|---|
chapter - 13 (세션) (0) | 2021.05.16 |
JSP - 10 (0) | 2021.04.15 |
JSP - 9 (0) | 2021.04.06 |
JSP - 7 (0) | 2021.03.24 |