Spring/Setting

스프링 시큐리티 (xml) - 커스텀 로그인 페이지

NULL.. 2018. 8. 13. 06:58
반응형

# 환경 정보
스프링 버전 : 4.3.2
시큐리티 버전 : 4.2.3

본 포스팅에서는 커스텀 로그인 페이지 생성 방법을 기록



1. security-context.xml 수정
 - 커스텀 로그인 페이지에 대한 정보를 추가
 - 간단하게 세팅하였고, 예제에 쓰인 설정 값 외에도 여러 세팅값이 있음
1
2
3
4
5
6
7
8
9
10
11
12
<security:http auto-config="true" use-expressions="true">
    <security:intercept-url pattern="/login" access="permitAll"/>
    <security:intercept-url pattern="/*" access="hasRole('USER')"/>
    
    <security:form-login 
        login-page="/login"
        username-parameter="userId"
        password-parameter="userPwd"
        default-target-url="/"
        authentication-failure-url="/login?err=true"
    />
</security:http>
cs
 - login-page : 로그인 페이지 URL
 - username-parameter : username 이라고 써있어 헷갈릴 수 있으나 유저 아이디를 담은 input 태그 name 명.
 - passwrod-parameter : 위와 동일
 - default-target-url : 로그인이 성공한 후 이동할 URL
 - authentication-failure-url : 로그인 실패시 이동할 URL



2. 로그인 페이지 생성

 - 초 단순 로그인 페이지

 - security-context.xml에 설정된 내용에 맞춰 페이지를 만들어준다.

 - login.jsp라는 이름으로 만듬


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
</head>
<body>
    <h1>커스텀 로그인 페이지</h1>
    <form action="${ctx }/login" method="post">
        아 이 디 : <input type="text" name="userId"/><br />
        비밀번호 : <input type="text" name="userPwd"/><br />        
        <input type="submit" value="로그인"/>
        <sec:csrfInput/>
    </form>
    <c:if test="${param.err }">
        <font color="red">로그인 실패</font>
    </c:if>
</body>
</html>
cs

 - 3 라인

 :: 스프링 시큐리티 태그 라이브러리. 인증된 사용자 정보 접근, csrf 방어 토큰 추가를 간단히 할 수 있게 됨.

 - 12 라인

 :: 로그인 처리를 하는 기본 URL이 post 방식의 /login 이다. 로그인 처리 URL 역시 설정 파일에서 바꿔줄 수 있음

 - 13, 14 라인

 :: 아이디, 비밀번호 입력 태그, name값은 설정 파일에 세팅한대로 해줘야 함

 - 16 라인

 :: csrf 공격 방지용 토큰 추가. 시큐리티4부터 기본값이 csrf 활성화가 되었음.

 - 18 ~ 20 라인

 :: 설정파일에서 로그인 실패시 로그인 페이지에 파라미터 추가한 URL로 이동하도록 세팅해놓았기에 실제로 잘 작동하는지 눈으로 보기 위함




여기까지 한 후 컨트롤러에 /login으로 접근할 수 있게 한 뒤 테스트를 해보면 아래와 같은 화면들을 확인 할 수 있다.


[ 로그인 페이지 접근시 ]




[ 로그인 실패시 ]





[ 로그인 성공시 ]