본문 바로가기
T.I.L. :: Today I Learned/항해99 14기 본과정

Day 23. 스프링 시큐리티, 너 도대체 뭐야

by DaSsom 2023. 4. 25.

아,, 학원 다니면서 공부했을 때, 스프링 시큐리티를 배웠던 것 같다. 아니,,; 그냥 로그인창 뜨는게 시큐리티라고 알려주면 오또캐.....🥲 심지어는 그 '스프링 시큐리티'라는 이름도 제대로 얘기안해준 듯;

 

오늘 과제를 진행하면서 스프링 시큐리티를 적용해보았는데, 내가 직접 적용해보려고 하니 이 동작 방식이 더욱 궁금해졌다. 과제를 위해 강의 코드를 그대로 가져와서 일부분씩 고치며 사용했다. 

 

일단 localhost:8080/ 을 그냥 url에 치면 로그인 폼으로 이동한다. 

그래서 나는 회원가입을 하고 그 아이디와 비밀번호를 입력하면 로그인이 되는 건줄 알았다. 회원가입은 포스트맨으로 진행해서 데이터베이스에 들어가는 것까지 확인했고 그 아이디로 로그인을 하려고 하면 "사용자 계정이 잠겼습니다" 라는 문구만 계속 뜨고 작동을 안하는 것이었다.

 

나의 생각으로는, postman에서 테스트하는 내용과 저 로그인 폼에서 일어나는 일이 같은 건줄 알았다. 그래서 당연히 DB에 들어가있는 정보로 입력하면 로그인이 정상적으로 될 줄 암.

 

근데 중요한게, 저 로그인 폼의 url 은 "http://localhost:8080/login" 

나는 "/login" 이라는 경로를 설정해준 적이 없었고, 그래서 제대로 작동을 안하는 건가? 싶었다.

 

그래서 'WebSecurityConfig.java' 파일 쪽에 이렇게 추가를 해줘보았다.

http.formLogin().loginProcessingUrl("/api/user/login");

음,, 여전히 제대로 동작 안함. 혹시나 반대로 "/login"으로 설정해보았지만 그것도 안됨.

 

결국 얻은 해답으론, FormLogin을 관리하는 컨트롤러가 따로 있기 때문에 같은 동작을 하지 않을 거라는 것!

어쨌든 포스트맨으로 테스트했을 때 정상동작하고 있었으니 그냥 미련을 거두기로... formLogin부분은 과감히 지워버렸다. 이 녀석때문에 한참 삽질을 했고 그 사이 정들었지만 어쩔 수 없이 보내주었다고 한다...

 

 

 

 

그리고 

http.httpBasic().and();

이 녀석에 대한 탐구가 더 필요하다. 이걸 붙여주면 인증이 제대로 되고 없으면 안됐다. 아직 잘 모르겠지만 앞으로 천천히 알아가게 될 거라고 기대하면서 일단 모르는 것 리스트에 추가만 해둔다... 안뇽

 

https://www.inflearn.com/questions/246473/httpbasic-%EC%84%A4%EC%A0%95

 

httpBasic() 설정 - 인프런 | 질문 & 답변

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련

www.inflearn.com

 

 

++ 추가자료

https://jangjjolkit.tistory.com/25

 

[Spring Security] 2. Spring Security 적용하기 (Session)

들어가며 스프링 시큐리티 사용시 기본적으로 Session을 사용한다. 스프링 시큐리티와 Session을 이용하여 로그인 및 권한을 체크하는 기능을 만들어보았다. 스프링 시큐리티에 대한 설명은 해당

jangjjolkit.tistory.com

https://brunch.co.kr/@springboot/491

 

JWT & Spring Security

Overview 이번 글에서는 JWT & Spring Security 에 대해서 정리해서 샘플코드와 함께 공유합니다. 외부에 공유되는 이 글에서는, 회사의 소스 코드 및 비즈니스 내용은 보안상 전혀 다루지 않습니다. 모

brunch.co.kr

 

 

++ 혹시나 또 지난번처럼 postman 사용법 미숙으로 오류가 생겼을까봐 미리 찾아본 자료

 

포스트맨 - 스프링시큐리티

 

스프링 시큐리티 인증 정보를 postman으로 보내 봅시다.

Bcrypt를 써먹기 위해서, 스프링 시큐리티 dependencies를 추가하였습니다. 이렇게 추가하고, 프로젝트 껍데기 zip 파일을 다운로드를 받아 봅시다. controller하고 application.properties만 조금 바꿔 보겠습

codingdog.tistory.com