스프링 시큐리티 에러일지

jinvicky·2023년 2월 14일
0

2023 Spring Project TIL

목록 보기
15/32

에러들과 해결책, 참고사이트를 정리했다.

  1. No AuthenticationEntryPoint could be established. Please make sure you have a login mechanism configured through the namespace

원인: security-context.xml에서 <security:form-login /> 태그가 빠져서 그렇다.
커스텀 로그인페이지 코드를 주석처리하는 바람에 사라져서 에러가 났었다.

<security:http>
        <security:intercept-url pattern="/sample/all" access="permitAll"/>
        <security:intercept-url pattern="/sample/member" access="hasRole('ROLE_MEMBER')"/>
        <security:intercept-url pattern="/sample/admin" access="hasRole('ROLE_ADMIN')"/>

        <security:form-login />
<!--        <security:form-login login-page="/customLogout" invalidate-session="true" />-->
    </security:http>
  1. <security:http> 태그에서 namespace not found 발생. 빨간 에러
    원인: 해당 xml 파일에서 <beans ~ 부분에 시큐리티를 위한 xmlns가 없어서 그랬다.
    나중에 또 문제 생기면 이걸 긁어서 쓰는 걸로.
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:security="http://www.springframework.org/schema/security"
       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"
>

아래 요 부분이 킬포다. xsi:schemaLocation에 여러 url이 들어가도 따옴표로 구분짓지 않는다.

xmlns:security="http://www.springframework.org/schema/security"
       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"

지금은 일단 java 설정보다 쉬운 xml 설정으로 공부하고 있다.
셋팅을 책보고 하다 인터넷 뒤지고 하다 진짜 10번은 말아먹었다가 겨우 페이지 하나 띄웠다;;

어려웠던 점
security-context.xml => sts에서는 namespace 체크하면 알아서 해준다는데 인텔리제이였고
코드 아무리 긁어다 붙여도 이상한 에러가 났었다. (지금은 기억이 안남)

체크리스트
1. security-context.xml 파일 위치
2. web.xml에서 security-context.xml을 제대로 param-value태그 안에 넣었는가.
3. 또한 web.xml에서 securityFilterChain을 제대로 설정했는가.

<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>
  1. 코드 넣어야 할 파일을 헷갈리지 않았는 지 확인 또 하기. 이거 어려웠다. 어떤 블로그에서는 파일 명시를 안 해서 여긴가? 저긴가? 했던 기억이 난다.

web.xml과 security-context.xml 그리고 pom.xml 의존성 설치를 제대로 했느냐가
설정 성공을 결정짓는다.

(root-context.xml, servlet-context.xml은 할 게 없다.)

pom.xml 의존성. 버전이 얘네가 같아야 한다고 하더라.

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

	<!-- JSP에서 스프링 시큐리티 태그라이브러리를 사용할 수 있도록 -->
	<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-taglibs -->
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-taglibs</artifactId>
		<version>5.0.6.RELEASE</version>
	</dependency>

참고사이트
https://taetoungs-branch.tistory.com/157
https://doing7.tistory.com/15

profile
Front-End와 Back-End 경험, 지식을 공유합니다.

0개의 댓글

관련 채용 정보