본문 바로가기
Spring

Spring Security (1) - 기본 설정

by 이도현 2021. 5. 19.

    보안과 관련하여 뭔가 작업을 한다는 것은 많은 전문성을 요하는 것이다. 스프링에서는 아주 간단하게 여러가지 보안 문제에 대한 해결책을 제공하는데 이 것이 스프링 시큐리티이다. 설명에 대해서는 참조자료를 통해 읽어보면 되고, 실습에 대해서만 작성한다. 

/spring/pom.xml

<spring-security-version>5.3.4.RELEASE</spring-security-version>

 

<dependencyManagement>

<dependencies>

<!-- Spring Framework (Bill of Materials) -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-framework-bom</artifactId>

<version>${org.springframework-version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

<!-- Spring Security BOM -->

<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-bom</artifactId>

<version>${spring-security-version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

 

  <!-- Spring Security --> <!-- Spring Security Web --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </dependency> <!-- Spring Security Config --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> </dependency> <!-- Spring Security Taglibs --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> </dependency>

 

/spring/src/main/webapp/WEB-INF/spring/security-context.xml

<?xml version="1.0" encoding="UTF-8"?>

<bean:beans

xmlns="http://www.springframework.org/schema/security"

xmlns:bean="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

        http://www.springframework.org/schema/security

        https://www.springframework.org/schema/security/spring-security.xsd

        http://www.springframework.org/schema/beans

        https://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 

<http auto-config="true">

<intercept-url pattern="/resources/**" access="permitAll"/>

<intercept-url pattern="/sign*" access="permitAll" />

<intercept-url pattern="/**" access="hasRole('USER')" />

<form-login

login-page="/signin" 

login-processing-url="/signinprocess"

username-parameter="email"  

always-use-default-target="true"

default-target-url="/"

/>

<csrf/>

<logout />

</http>

 

<authentication-manager>

<authentication-provider>

<user-service>

<!-- Password is prefixed with {noop} to indicate to DelegatingPasswordEncoder 

that NoOpPasswordEncoder should be used. This is not safe for production, 

but makes reading in samples easier. Normally passwords should be hashed 

using BCrypt -->

<user name="jimi@gmail.com" password="{noop}jimispassword"

authorities="ROLE_USER, ROLE_ADMIN" />

<user name="bob@gmail.com" password="{noop}bobspassword"

authorities="ROLE_USER" />

</user-service>

</authentication-provider>

</authentication-manager>

 

</bean:beans>

/spring/src/main/webapp/WEB-INF/web.xml

<!-- Spring Security -->

<filter>

<filter-name>springSecurityFilterChain</filter-name>

<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

</filter>

 

<filter-mapping>

<filter-name>springSecurityFilterChain</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

    일단 이렇게 파일을 수정하고 생성하면 이제 시작할 수 있다. 일단 회원가입, 회원로그인/로그아웃의 구현이 우선이기 때문에, 일단은 해당 기능을 구현하는 곳으로 넘어가서 작업을 하면서 다음으로 넘어가려 한다. 이곳을 참고하여 작업하고 다음으로 넘어가자. 스프링 시큐리티 설정을 하고 나면 기본적인 설정이 되어 있지 않으면 정상적으로 동작하지 않기 때문에 기본회원값을 jimi / jimispassword, bob / bobspassword 로 두고 일단 작업을 시작한다.

참조

https://docs.spring.io/spring-security/site/docs/5.3.5.BUILD-SNAPSHOT/reference/html5/