티스토리 뷰

학교공부/JSP

JSP - 8

날따라해봐요요롷게 2021. 4. 17. 19:24

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함