728x90
메소드 | 형식 | 설명 |
getRemoteuser() | String | 사용자의 인증 상태를 반환한다. |
getAuthType() | String | 서블릿을 보호하는데 사용되는 인증 방식의 이름을 반환한다. |
isUserInRole(java.lang.String role) | boolean | 현재 인증된 사용자에게 설정된 역할이 있는지 확인한다. 설정된 경우 true를 반환하고 그렇지 않은 경우 false를 반환한다. |
getProtocol() | String | 웹 브라우저의 요청 프로토콜을 가져온다. |
isSecure() | boolean | 웹 브라우저에서 https 요청으로 request가 들어왓는지 확인한다. 웹 브라우저에서 https로 접근하면 true를 반환하고,http로 접근하면 false를 반환한다. |
getUserPrinciple() | Principle | 현재 인증한 사용자의 이름을 포함하여 java.security.Principle 객체를 반환한다. |
Servers패키지에 tomcat-users.xml파일 들어가서
user: 사용자와
role : 권한을 설정한다.
web.xml파일을 생성해서 아래 코드를 작성한다.
<security-role>
<role-name>tomcat</role-name>
</security-role>
사용할 권한을 선언해준다
url-pattern 파일을 지정하고
role-name에 위에 선언한 권한을 가져온다.= tomcat
그리고 url주소에 맞는 파일 생성
전체코드
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>JSPBook</display-name>
<!-- 시큐리티 역할(role) 설정 -->
<security-role>
<role-name>tomcat</role-name>
</security-role>
<security-role>
<role-name>role1</role-name>
</security-role>
<security-role>
<role-name>admin</role-name>
</security-role>
<!-- 시큐리티의 제약 사항(constraint)을 설정 -->
<!-- JSPBook이라는 웹 어플리케이션에서 해당 URL을 GET방식으로 요청하려면
role1이라는 권한이 있어야 함(both, role1 아이디)
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPBook</web-resource-name>
<url-pattern>/ch10/security01.jsp</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description></description>
<!-- /ch10/security01.jsp가려면 role1이라는 계정이 있어야한다.라는 뜻 -->
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<!-- 접근제한 URL : /ch10/security02.jsp
tomcat 권한을 가진 사용자만 접근 가능
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPBook</web-resource-name>
<url-pattern>/ch10/security02.jsp</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description></description>
<!-- /ch10/security02.jsp가려면 tomcat이라는 계정이 있어야한다.라는 뜻 -->
<role-name>tomcat</role-name>
</auth-constraint>
</security-constraint>
<!-- 접근 제한 URL : /addProduct.jsp
허용권한 : admin
허용user : admin
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPBook</web-resource-name>
<url-pattern>/addProduct.jsp</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description></description>
<!-- /ch10/security02.jsp가려면 tomcat이라는 계정이 있어야한다.라는 뜻 -->
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPBook</web-resource-name>
<url-pattern>/product.jsp</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description></description>
<!-- /ch10/security02.jsp가려면 tomcat이라는 계정이 있어야한다.라는 뜻 -->
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<!-- 인증(authentication)-로그인/로그아웃 처리를 위한 페이지를 설정 -->
<login-config>
<!-- <auth-method>BASIC</auth-method> -->
<auth-method>FORM</auth-method>
<form-login-config>
<!-- 로그인 URL 설정 -->
<form-login-page>/login.jsp</form-login-page>
<!-- 인증(로그인) 실패시 실패 페이지 성정 -->
<form-error-page>/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
</web-app>
작성했으면 위에서 사용할 파일을 만든다
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<h3>프로그래밍적 시큐리티 처리</h3>
<p>
웹 어플리케이션(JSPBook 프로젝트)의 보안을 위해 코드를 작성하여
사용자의 권한 부여를 처리하는 방식
</p>
<p>
선언적 시큐리티(tomcat-users.xml : 권한(role)들 + 사용자(user)들
web.xml : 제한 URL, 권한, 로그인/ 로그아웃 페이지
)의 보안으로 충분하지 않을 때 request 내장 객체의 메소드를 사용하여 사용자를 승인
</p>
<p>사용자 ID : <%=request.getRemoteUser() %></p>
<!-- .getAuthType() : BASIC / FORM -->
<p>인증 방법 : <%=request.getAuthType() %></p>
<p>
인증한 사용자가 tomcat role에 속하는지?
<%=request.isUserInRole("tomcat") %>
<%
// if(request.isUserInRole("tomcat")){
// out.print("<a href='/ch06.addProduct.jsp'> 상품 등록</a>");
// }
%>
</p>
<p>
인증한 사용자가 role1에 속하는지?
<%=request.isUserInRole("role1") %>
</p>
</body>
</html>
'JSP > JSP기초' 카테고리의 다른 글
JSP 예외처리 4가지 정리 (0) | 2023.07.11 |
---|---|
JSP(security) 프로그래밍적 시큐리티 처리 방법 정리 (2) | 2023.07.10 |
JSP(security) 선언적 시큐리티 처리 방법_FORM (0) | 2023.07.07 |
JSP(security) 선언적 시큐리티 처리 방법_BASIC (0) | 2023.07.07 |
JSP(다국어처리)JSTL 사용해서 번들Bundle 사용하는 방법 (0) | 2023.07.07 |