Spring

[Spring] 프로젝트 생성 시 spring security 사용 후 localhost:8080/login

Donghwan Lee 2022. 2. 27. 15:07

Spring initializer (https://start.spring.io/) 를 사용하면 보다 쉽게 Spring 프로젝트를 만들 수 있습니다. 여기서 보통 Dependencies에 저희가 사용할 의존성을 입력하면 build.gradle 파일을 따로 수정하지 않아도 알아서 생성해 준다는 큰 장점이 있습니다.

하지만 여기서 주의해야 할 사항이 있습니다. Spring Security와 OAuth2 Client의 의존성을 미리 주입한 후 프로젝트를 생성하게 되면 이후 저희가 톰캣으로 서버를 띄웠을 때 반드시 login 페이지로 이동하게 됩니다.

하단 로그에 Using generated security password : ~ 라고 되어있는 부분에 password가 생성된 것을 보실 수 있습니다. 만약 우리가 별 다른 로그인 페이지를 구현하지 않은 채로 oauth2.client 의존성을 추가하게 되면 위와 같이 password가 생성이 되고, 만약 톰캣을 사용해서 직접 서버를 돌려보면

다음과 같이 항상 localhost:8080/login 페이지로 이동해서 권한을 인증받으라는 화면이 나오게 됩니다. 여기에 default로는 Username에는 user, password에는 로그에 적힌 password를 그대로 옮겨서 복사하면 정상적으로 홈페이지가 작동하게 됩니다. 하지만 이렇게 되었을 때 controller를 사용하는 테스트를 진행한다면 아래와 같은 오류가 발생합니다.

보시면 http Status의 기대값이 200인데에 반해 실제로는 401 (권한 없음) 이 나오게 됩니다. 

Spring Security에서 기본으로 제공하는 로그인 페이지 때문에 위와 같이 테스트에서 오류가 발생할 수 있음으로, 테스트를 구현할 때는 위와 같은 것들을 잘 고려하면 좋을 것 같습니다!