본문 바로가기

BackEnd/JSP

[JSP 웹 프로그래밍] 시큐리티 2 (프로그래밍적 시큐리티 처리)

728x90
반응형

1. 프로그래밍적 시큐리티(programmatic security)

   ▷ 웹 애플리케이션의 보안을 위해 코드를 작성하여 사용자의 권리 부여를 처리하는 방식

   ▷ 선언적 시큐리티의 보안으로 충분하지 않을때 request 내장 객체의 메소드를 사용하여 사용자를 승인하는 방법

 

 

 

<선언적 시큐리티 처리 예제>

[JSP 웹 프로그래밍] 시큐리티 (선언적 시큐리티 처리) (tistory.com)

 

 

◎ 프로그래밍 방식으로 보안 처리하기 예제(선언적 시큐리티 처리 마지막 예제 참고)

1. web.xml 파일 생성
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
	<security-role>
		<role-name>role1</role-name>
	</security-role>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>JSP230306</web-resource-name>
			<url-pattern>/ch10/security02.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>
		<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>
</web-app>​


2. login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Security</title>
</head>
<body>
	<form name="loginForm" action="j_security_check" method="post">
		<p> 사용자명 : <input type="text" name="j_username">	
		<p> 비밀번호 : <input type="password" name="j_password">	
		<p> <input type="submit" value="전송">	
	</form>
</body>
</html>​


3. login_failed.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Security</title>
</head>
<body>
	<p> 인증 실패했습니다.
</body>
</html>​


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


security 페이지에서 창을 실행하면 로그인 창이 나타납니다.

role1, both는 로그인이 됩니다. 만약 password가 틀리면 인증 실패 화면이, 맞으면 인증 성공 화면이 나타납니다.

◎ 로그인 성공했을 시 결과 화면


◎ 실패 했을 시 '인증 실패했습니다'라고 나타납니다.

 

프로그래밍적 시큐리티 처리는 선언적 시큐리티에서 부족할 경우 request 내장 객체의 메소드를 사용해 사용자를 승인하는 방법입니다.

 

예제를 보면 request를 사용해서 추가적인 정보를 확인할 수 있도록 만들 수 있습니다.

 

보안 기능은 중요하기 때문에 잘 알아둬야겠어요!!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형