본문 바로가기
Backend/JSP

[JSP] 시큐리티

by 그적 2020. 11. 20.

Security란? 허가된 사용자만이 특정 웹페이지에 접근할 수 있도록 제한하는 보안 기능

 

- 인증(Authentication)

 : 사용자가 웹 페이지에 접근할 때, JSP 컨테이너는 요청된 페이지에 보안 제약 사항이 있는지 확인하고, 사용자의 이름과 암호를 확인한다.

- 권한 부여(Authorization)

 : 특정 사용자가 해당 페이지에 접근할 수 있는지 확인한다. (= 허가)

 

 

처리 방법

1) 선언적 시큐리티 : 코드 작성 없이 web.xml 파일에 보안 구성을 작성하여 사용자 인증을 수행한다.

2) 프로그래밍적 시큐리티 : request 내장 객체의 메소드를 통해 사용자의 권한을 부여한다.

 

① 선언적 시큐리티

- web.xml 파일은 보안 역할, 보안 제약 사항, 인증 처리 등을 설정하여 보안을 구성하는 파일이다.

- tomcat-user.xml에 등록된 역할들로 역할을 설정해야한다.

 

// 시큐리티 역할 설정

<security-role>			// 웹 페이지에 사용하는 역할을 나열
   <role-name> 역할 이름 </role-name>
</security-role>

// 시큐리티 제약 사항 설정

<security-constraint> 
<web-resource-collection>
      <url-patten> 자원 이름 설정 </url-pattern>
      <http-method> 접근 제한 url 목록 설정 </http-method>
      <web-resource-name> http 메소드 설정 <web-resource-name>
</web-resource-collection>
<auth-constraint>
      <description> 설명으로 쓰임 </description>
      <role-name> 역할 이름 </role-name>		// 대소문자 구분 O ,생략 시 사용자 요청 허용 X
</auth-constraint>
<user-data-constrain>
      <transport-guarantee> NONE|INTERGRAL|CONFIDENTIAL </transport-guarantee>
</user-data-constrain>
</security-constraint>

   ** <security-constraing> : 접근 권한을 정의

   ** <auth-constraint> : 접근할 수 있는 사용자 설정, 생략 시 인증 요구 X

   ** <user-data-constrain> :  데이터 보호

// 시큐리티 인증 설정

<login-config>			// 로그인 페이지나 오류 페이지 호출
   <auth-method>인증 처리 방식 설정</auth-method>
   <realm-name> 보통 설명으로 쓰임 </realm-name>
   <form-login-config> BASIC|DIGEST|FORM|CLIENT-CERT</form-login-config>
       // form 기반 일 때 하위 목록들 : <form-login-page>, <form-error-page>
</login-config>

 

 

② 프로그래밍적 시큐리티

: 가장 많이 사용하는 메소드는 isUserRole(java.lang.String role); 이다. 반환 값은 boolean이며, 현재 사용자에 대한 인증을 확인한다.

 

그 외 아래와 같은 메소드가 존재한다.

- getRemoteuser() : 사용자의 인증 상태를 반환
- getAuthType() : 서블릿을 보호하는 인증방식의 이름 반환

- getProtocol() : 요청 프로토콜을 가져옴
- isSecure() : https 요청으로 접근하면 true 반환
- getUserPrinciple() : 현재 인증한 사용자를 포함하여 java.securityPrinciple 객체를 반환

댓글