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 객체를 반환
'Backend > JSP' 카테고리의 다른 글
[JSP] 세션 (0) | 2020.12.18 |
---|---|
[JSP] 예외 처리 (0) | 2020.11.20 |
[JSP] 다국어 처리 (0) | 2020.11.20 |
[JSP] 'Starting Tomcat v9.0 Server at localhost' has encountered a problem 오류 확인 (2) | 2020.11.04 |
[JSP] The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 오류 해결 (0) | 2020.11.04 |
댓글