brunch

You can make anything
by writing

C.S.Lewis

by 갱그리 Apr 29. 2016

[Spring] spring security 적용하기

4/29 개발일기

spring security 를 적용하면서 spring framework에 대해 조금 더 알게 됐다. (내가 지금까지 알고 있던 건 spring의 ㅅ 자에도 닿지 못했던 것들이었다 ㅠㅠ) 여기에 대해 조금 정리를 하고 넘어보려고 한다.


1. pom.xml 에서 Spring security Dependency 입력 오류


spring security 를 사용하려고 pom.xml 에 spring security dependency를 입력하자마자 오류가 났다. Project > properties > maven > download sources 를 해도, update project를 해도 오류는 사라지지 않았다. 오류의 원인은 spring framework 버전과 spring security 버전 충돌 때문이었다.


spring security 는 4.x 버전이고 spring framework은 3.x 버전이어서 발생한 오류였다. 둘 다 동일하게 4.x 대로 맞춰주었다.


수정한 Spring framework과 Spring security 버전

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.6.RELEASE</version>
</dependency>       
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.1.6.RELEASE</version>
</dependency>

<!-- security -->
<dependency>
        <groupId>org.springframework.security</groupId>
         <artifactId>spring-security-web</artifactId>
        <version>4.0.4.RELEASE</version>
</dependency>
<dependency>
        <groupId>org.springframework.security</groupId>
         <artifactId>spring-security-core</artifactId>
        <version>4.0.4.RELEASE</version>
</dependency>
<dependency>
        <groupId>org.springframework.security</groupId>
         <artifactId>spring-security-config</artifactId>
        <version>4.0.4.RELEASE</version>
</dependency>


이 오류 해결방법을 찾다가 알게된 사실. 아래 링크에 들어가서 dependency 를 검색하면 해당 jar의 최신 버전 별 정보를 조회할 수 있다.


2. security 설정 파일에서 schemaLocation 오류 


Spring에서 bean 설정하는 방법은 아래와 같이 다양하다.

(1) properties 파일 사용 (2) xml 파일 사용 (3) class 로 정의 

나는 (2)번 방식으로 xml Configuration 파일을 사용하고 있었다. 그래서 security 설정파일을 xml Configuration 으로 만들고 있었는데, 이에 대한 예제를 찾아 복사하니 계속 오류가 발생했다. 알고보니 내가 pom.xml 에 기술한 security jar 버전과 xml configuration의 스키마 링크가 맞지 않았다. 


스키마로케이션에 입력한 http://www.springframework.org/schema/security/spring-security-3.1.xsd 을 http://www.springframework.org/schema/security/spring-security-4.0.xsd 으로 변경했다.


변경한 스키마

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security
                        http://www.springframework.org/schema/security/spring-security-4.0.xsd">



3. security 설정 파일에서 ROLE_USER 오류


예제를 그대로 복사하다 보니 3.1 스키마 문법이 적용되어 있었다. <http> 아래 access="ROLE_USER" 가 자꾸 오류였다. 그래서 다시 구글링해 ROLE_USER 를 hasRole('ROLE_USER') 로 수정했다.


설정파일 변경내용

<security:http auto-config='true'>
    <security:intercept-url pattern="/favicon.ico" access="ROLE_ANONYMOUS" />
    <security:intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</security:http>
매거진의 이전글 Report View 만들기 (jspdf 한글 다운)

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari