.jsp 연습하기 - 시큐리티

오늘·2021년 5월 11일
0

웹 페이지 연습

목록 보기
11/35

시큐리티

  • 허가된 사용자만이 특정 웹 페이지에 접근할 수 있도록 제한하는 보안 기능
  • 사용자가 권한이 없는 데이터에 접근하는 것을 막거나 웹 공격자가 전송데이터를 중간에 가로채는 것을 방지하는 등 중요한 역할을 한다.
  • 인증(authentication)
    -> 사용자가 웹 브라우저를 사용하여 웹 페이지에 접근할 때 jsp 컨테이너는 요청된 페이지에 보안제약이 있는지 확인하고, 사용자에게 이름과 암호를 확인하여 수행한다.
  • 권한 부여(authorization)
    -> 특정 사용자가 해당 페이지에 접근할 수 있는지 확인하여 승인한다

시큐리티 처리 방법

시큐리티 처리 방법 설명
선언적 시큐리티 코드 작성 없이 web.xml 파일에 보안 구성을 작성하여 사용자의 인증을 수행하는 방식이다.
프로그래밍적 시큐리티 request 내장 객체의 메소드를 통해 사용자의 권한 부여를 처리하는 프로그래밍 방식이다.

페이지 보안하기

servers -> Tomcat -> tomcat-users.xml
1. 해당 부분에 주석을 풀어주고
2. 아이디로 사용할 부분 (username)과 비밀번호로 사용할 부분 (password)를 작성해준다.

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat1234" roles="tomcat"/>
  <user username="both" password="both1234" roles="tomcat,role1"/>
  <user username="role1" password="role1234" roles="role1"/>

</tomcat-users>

보안을 걸어줄 파일이 있는 최상위 폴더 -> WEB-INF -> 새파일 만들기(web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
	<security-role>
		<role-name>
		<!-- role name : 역할 이름 -->
		role1
		</role-name>
	</security-role>
	<security-constraint>
		<web-resource-collection>
		<!-- web-resource-collection : 웹 자원에 대한 접근을 설정 -->
			<web-resource-name>
				<!-- 보안을 걸어줄 프로젝트(최상위 폴더) 명 -->
				JspBook
			</web-resource-name>
			<url-pattern>
				<!-- 제약 조건을 걸어줄 파일 -->
				/Ch10/1_security.jsp
			</url-pattern>
			<http-method>
				<!-- 전송방식 : post or get 방식? -->
				GET
			</http-method>
		</web-resource-collection>
		<auth-constraint>
			<description>
				<!-- description : 설명이 필요하다면 여기에 작성 -->
			</description>
			<role-name>
				<!-- role-name : 저 파일에 접근할 수 있는 역할이름 -->
				role1
			</role-name>
		</auth-constraint>
	</security-constraint>
	<login-config>
		<auth-method>BASIC</auth-method>
	</login-config>
</web-app>

1_security.jsp 파일

<body>
	<p> Security </p>
	<h1> 인증에 성공하셨습니다  b </h1>
</body>

인터넷 익스플로러에서 실행했을 시
이런식으로 이름/암호를 작성해달라는 창이 뜬다(무섭게), 거기에 설정해두었던 걸 입력해주면
이런식으로 페이지에 접근 할 수 있다


로그인 페이지 만들기

로그인 페이지를 저렇게 시스템 자체적인 게 튀어나오도록 하지 않고, 내가 만들 로그인 페이지에서 넘어가게끔 할 수도 있다.

  1. (web.xml)부분에서 BASIC 되어있는 부분을 FORM 으로 바꾼다.
	<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>
  1. 로그인 페이지를 만든다 (login.jsp)
    경로를 잘 맞춰서 만들어줘야 한다.
form 기반 인증 시 로그인 페이지의 요구 사항
속성 이름 속성 값
form 태그의 action 속성 j_security_check
사용자의 name 속성 j_username
비밀 번호의 name 속성 j_password
<body>
	<p> login.jsp 파일 </p>
	<form name="loginForm" action="j_security_check" method="post">
		아이디 : <input type="text" name="j_username"><br>
		비밀번호 : <input type="password" name="j_password"><br>
		<input type="submit" value="로그인">
	</form>
</body>
  1. 연결 실패 페이지를 만든다(login_failed.jsp)
<body>
	<p> 인증에 실패하셨습니다. </p>
</body>

로그인 파일을 실행하면
만약 설정하지 않은 암호를 입력한다면
설정한 암호를 입력한다면
...? 왜..이렇게 뜨는거지

0개의 댓글