허가된 사용자만이 특정 웹 페이지에 접근할 수 있도록 제한
시큐리티 처리 방법 | 설명 |
---|---|
선언적 시큐리티 | 코드 작성없이 web.xml 파일에 보안 구성을 작성하여 사용자의 인증을 수행하는 방식 |
프로그래밍적 시큐리티 | request 내장 객체의 메소드를 통해 사용자의 권한 부여를 처리하는 프로그래밍 방식 |
tomcat-users.xml 파일에서 주석 부분을 해제하고 기존 설정된 역할과 사용자를 사용하거나 새로운 역할과 사용자를 추가.
<role rolename="manager"/>
<user username="admin" password="admin1234" roles="manager"/>
웹 애플리케이션 배포 설명자 web.xml 파일에 보안 구성을 작성하여 수행하는 방식. web.xml 파일에는 보안역할, 보안 제약사항, 인증처리 등을 설정하여 보안을 구성
'security-role' 은 웹 애플리케이션에 사용하는 역할을 나열하는 요소
<security-role>
<role-name>역할 이름</role-name>
</security-role>
<security-constraint>
<web-resource-collection></> //웹 자원에 대한 접근을 설정
<auth-constraint></> //웹 자원에 접근할 수 있는 인증된 사용자 설정
<user-data-constraint></> //데이터 전송 시 데이터 보호 설정
</security-constraint>
<web-resource-collection>
<web-resource-name>자원 이름</web-resource-name>
<url-pattern>접근 제한 url</url-pattern>
<http-method>전송 방식</http-method>
</web-resource-collection>
<auth-constraint>
<description>설명</description>
<role-name>역할 이름</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>none/integral/confidential</transport-guarantee>
</user-data-constraint>
<login-config>
<auth-method> //웹자원에 대한 인증 처리 방식을 설정
<realm-name> //웹자원에 접근할 수 있는 인증된 사용자를 설정
<form-login-config> //데이터 전송 시 데이터 보호를 설정
</login-config>
<auth-method>BASIC,DIGEST,FORM,CLIENT-CERT</auth-method>
속성 이름 | 속성 값 |
---|---|
form 태그의 action 속성 | j-security_check |
사용자의 name 속성 | j_username |
비밀번호의 name 속성 | j_password |
<realm-name>영역 이름<realm-name>
<form-login-config>
<form-login-page>로그인 페이지 url</form-login-page>
<form-error-page>로그인 오류 페이지 url</form-error-page>
</form-login-config>
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<security-role>
<role-name>role1</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>JSPBook</web-resource-name>
<url-pattern>/security02.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>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
</web-app>
프로그래밍적 시큐리티는 웹 애플리케이션의 보안을 위해 코드를 작성하여 사용자의 권한 부여를 처리하는 방식. request 내장 객체의 메소드를 사용하여 사용자를 승인하는 방법.
메소드 | 형식 | 설명 |
---|---|---|
getRemoteuser() | String | 사용자의 인증 상태 반환 |
getAuthType() | String | 서블릿을 보호하는 데 사용되는 인증 방식의 이름을 반환 |
isUserInRole(java.lang.String role) | boolean | 현재 인증된 사용자에게 설정된 역할이 있는지 확인 |
getProtocol() | String | 웹 브라우저의 요청 프로토콜을 가져옴 |
isSecure() | boolean | 웹 브라우저에서 https 요청으로 request 가 들어왔는지 확인 |
getUserPrinciple() | Principle | 현재 인증한 사용자의 이름을 포함하여 java.security.Principle 객체를 반환 |
<body>
<p> 사용자명: <%=request.getRemoteUser() %>
<p> 인증방법: <%=request.getAuthType() %>
<p> 인증한 사용자명이 역할명 "tomcat"에 속하는 사용자인가요?
<%=request.isUserInRole("tomcat")%>
<p> 인증한 사용자명이 역할명 "role1"에 속하는 사용자인가요?
<%=request.isUserInRole("role1")%>
</body>