본문 바로가기

Dev-/Spring

Spring Security 관련 에러 해결법

참고: 아주 기초적인 Spring Security 사용법



스프링 시큐리티를 적용하는데 조금 애를 먹었는데,

제가 겪은 관련 에러 해결에 대해 정리해보겠습니다.



1. security-context.xml 파일 xsi:schemaLocation 오류


시큐리티 관련 라이브러리를 추가했을 땐 별 문제가 없었는데, 

security-context.xml에서 오류가 뜨고,


Please update your schema declarations to the 4.2 schema 라는 메세지가 적혀있었습니다.

콘솔창 역시 비슷한 메세지가 찍혀있었습니다.


앱을 실행시키면,, 아예 home.jsp 페이지도 뜨질 않구요.



원인은 security-context.xml의 xsi:schemaLocation 버전문제였습니다.



5.0이라서 4.2 이상이니 별 문제 없겠지 했었는데,, 정확하게 일치해야 하는 듯 합니다.

오류 메세지에 있는 것과 동일하게 4.2로 고쳐주면 해결됩니다. 




2. security-context.xml 파일 ROLE_USER 오류


스키마 버전에 따라 문법이 다른 듯 합니다.(SpEL이라는 스프링 표현 언어가 따로있나보네요.)

use-expressions 속성을 고쳐가며 알맞게 쓰시면 될 듯 합니다.


또는




3. java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null" 500에러


500에러가 뜨면서 PasswordEncodernull에 매핑되어있다고 뜹니다.

알아보니,, 스프링 시큐리티는 기본적으로 패스워드를 암호화 하는데,


{} 사이에 필요한 암호화 식별자를 넣어준다고 합니다.

암호화를 사용하지 않을 것이라면, 그것 역시 알려주어야 합니다.


security-context.xml에서 아래와 같이 {noop}password의 값 맨앞에 넣어줍니다.



(스프링 시큐리티 버전 5.0 이상부터 따로 명시해주어야 하는 듯 합니다.)