2022. 12. 12. 16:58ㆍ[Spring]_/[Eclipse]
개요
Intellij를 사용하다가 다음 프로젝트가 Eclipse 환경으로 인해
Eclipse 에 spring 최신버전을 설치하였고
SpringSecurity 를 설치 하는 과정 설명
환경
Eclipse 최신버전 2022-09 (4.25.0)
Tomcat - 10.0.23 v
maven Artifact ID : maven-archetype-webapp 1.4v
Spring 6.0.2 ver
Spring Security 6.0.0 ver
특이사항
Spring 최신버전부터는 servlet 버전으로 인하여 tomcat version 을 10이상으로 설치하여야 합니다.
다음 포스트 참고
https://yn971106.tistory.com/161
하위 포스트의 후속내용입니다.
https://yn971106.tistory.com/162
연동과정
1.pom.xml 수정
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>6.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>6.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>6.0.0</version>
</dependency>
2. web.xml 수정
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/*Context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/dispatcher-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.view</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
주의 : bean 생성을 하기 전에 filter 가 먼저 실행 될 경우
Error creating bean with name 'org.springframework.security.filterChains': Cannot resolve reference to bean 'org.springframework.security.web.DefaultSecurityFilterChain#0' while setting bean property 'sourceList' with key [0]
오류가 발생 할 수 있음.
원래 filter가 먼저 온 뒤 component 스캔 context가 올라가는 순서로 했다가 위의 오류가 발생하여 한참 해매다가
순서를 바꾸니 정상작동하였음.
3. securityContext.xml 파일 생성
contextconfigLocation 에 지정한 위치에 파일으 xml로 생성한뒤 다음과 같이 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<http auto-config="true" use-expressions="true">
<!-- <intercept-url pattern="/**" access="ROLE_USER" /> -->
<intercept-url pattern="/**" access="permitAll"/>
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user" password=" {noop}userPw" authorities="ROLE_USER"/>
<user name="guest" password=" {noop}guest" authorities="ROLE_GUEST"/>
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
주의 use-expressions="true" 로 지정하지 않을 경우
다음과 같은 오류가 발생할 수 있음
Configuration problem: AuthorizationManager must be used with `use-expressions="true"
우선 /** -> 모든 url 입력시 permitAll 로 전부 접속 가능하도록 설정하였습니다.
4. 빌드 및 실행
./login 로 들어올 경우 springsecurity 에서 자동생성해주는 login page로 이동하게 되면 정상 작동하는 것입니다.
다음에는 해당 페이지를 사용자가 직접 커스텀하는 방식과
DB 연동하여 조회후 DB에 저장된 유저 체크를 해보도록 하겠습니다.
감사합니다.
'[Spring]_ > [Eclipse]' 카테고리의 다른 글
[Eclipse]_Spring Security Handler 구현 3단계 (로그인 실패 시) (0) | 2022.12.20 |
---|---|
[Spring]_Oracle 연결 & Mapper 연동 ( Error 정리) (0) | 2022.12.15 |
[eclipse]_Spring 설치 및 구현 (0) | 2022.12.09 |
[Eclipse]_Spring 최신 버전 servlet 오류(feat.jakarta error) (0) | 2022.12.09 |
[Eclipse]_eclipse maven-web 프로젝트 생성 (feat.tomcat) (0) | 2022.12.08 |