티스토리 뷰

코딩/JSP

[10주 3일차] 시큐리티 (2)

ehzim 2023. 12. 13. 15:15

3. 프로그래밍적 시큐리티 처리

 

프로그래밍적 시큐리티는 웹 애플리케이션의 보안을 위해 코드를 작성하여 사용자의 권한 부여를 처리하는 방식이다.

 request 내장 객체의 메소드를 사용하여 사용자를 승인하는 방법이다.

 

* 보안관련 request 내장 객체의 메소드

메소드 형식 설명
getRemoteuser() String 사용자의 인증 상태를 반환한다.
getAuthType() String 서블릿을 보호하는데 사용되는 인증 방식의 이름을 반환한다.
isUserInRole(java.lang.String role) boolean 현재 인증된 사용자에게 설정된 역할이 있는지 확인한다. 설정된 경우 true를 반환하고 그렇지 않은 경우 false를 반환한다.
getProtocol() String 웹 브라우저의 요청 프로토콜을 가져온다.
isSecure() boolean 웹 브라우저에서 https 요청으로 request가 들어왔는지 확인한다. 웹 브라우저에서 https로 접근하면 true를 반환하고, http로 접근하면 false를 반환한다.
getUserPrinciple() Principle 현재 인증한 사용자의 이름을 포함하여 java.security.Principle 객체를 반환한다.

 

 

 

request 내장 객체의 isUserInRole() 메소드 사용 예시

<% if (request.isUserInRole("admin")) { %>\
	<a href="admin/addproduct.jsp">상품 등록</a>
    <a href="admin/member.jsp">회원 관리</a>
<% } %>

 

 

 

 

 

 

프로그래밍 방식으로 보안 처리하기

예제 10-3

WEB-INF

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
	<security-role>
		<role-name>manager</role-name>
	</security-role>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>test</web-resource-name>
			<url-pattern>/security02.jsp</url-pattern>
			<http-method>GET</http-method>
		</web-resource-collection>
		<auth-constraint>
			<description></description>
			<role-name>manager</role-name>
		</auth-constraint>
	</security-constraint>
	<login-config>
			<auth-method>FORM</auth-method>
		<form-login-config>
			<form-login-page>/login.jsp</form-login-page>
			<form-error-page>/login_failed.jsp</form-error-page>
		</form-login-config>
	</login-config>
</web-app>

 

security02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p> 사용자명 : <%=request.getRemoteUser() %>
	<p> 인증방법 : <%=request.getAuthType() %>
	<p> 인증한 사용자명이 역할명 "tomcat"에 속하는 사용자인가요?
		<%=request.isUserInRole("tomcat") %>
	<p> 인증한 사용자명이 역할명 "role1"에 속하는 사용자인가요?
		<%=request.isUserInRole("manager") %>	
</body>
</html>

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday