Spring Security(2)

이민우·2023년 6월 26일
0

오늘은 Spring Security를 사용해보고 알게된점을 적어보려한다.

현재 Spring Security에 대해 이해하는 단계에 있다.

@SpringBootApplication
@SpringBootApplication 어노테이션을 스스로 이해한 내용을 적어보자면 Spring boot를 이용한 프로젝트에 적용해주면 프로젝트 필요한 설정들을 자동으로 해주는것 같다.

그중 살펴볼 설정은 SecurityAutoConfiguration 으로 SecurityAutoConfiguration은 인증 기능을 가지고 있다.

예상하는 바로는 라이브러리에 Spring Security를 적용하면 @SpringBootApplication 어노테이션이 자동으로 SecurityAutoConfiguration 을 설정해 주고 우리는 그것을 별다른 작업없이 사용할 수 있는듯 하다.
SecurityAutoConfiguration 의 기능으로는 로그인폼 을 구현하지 않아도 제공해주고 토큰을 쿠키에 저장하는 등의 기능을 가지고 있는듯 하다.

위와 같은 내용은 구글링은 통해 이해한 내용을 적은 것으로 확실한 정보가 아닐 수 있다
Spring boot를 계속 사용해봄으로써 더 정확하고 자세하게 알아갈 예정이다.

이번 글에서 주로 알아볼 내용은 PasswordEncoder이지만 @SpringBootApplication에 대해 먼저 적은 이유는 SecurityAutoConfiguration을 @SpringBootApplication을 설정할때 기능을 사용할지 말지를 적용할 수 있는데 그에따라서 PasswordEncoder를 been으로 저장하거나 말아야할지가 결정되는것이라고 생각했기 때문이다.

우선 PasswordEncoder는 데이터베이스에 비밀번호 데이터를 저장하고자 할때 사용하는 것으로 클라이언트가 서버에 보낸 비밀번호를 암호화시켜 데이터베이스에 저장해 보안성을 높여준다.

이러한 기능을 가진 PasswordEncoder 는 bean으로 등록 후 주입시켜 사용하는데 코드로 살펴보자.

위와같이 PasswordEncoder를 수동으로 bean으로 입력한 뒤 사용할 클레스에서 주입후 사용한다.

빨강색으로 표시한 부분이 PasswordEncoder를 주입시켜준 부분이고 파랑색으로 표시한 부분이
PasswordEncoder를 사용해 사용자에게 받은 데이터를 암호화 시켜 주는 것이다.

이러한 PasswordEncoder를 사용 하면서 위에서 언급한 의문점이 들었던 이유는 PasswordEncoder를 bean으로 등록하지않고 Service에서 사용하려 해서 문제가 발생했고 그이유를 SecurityAutoConfiguration 에 있다고 생각했다.
SecurityAutoConfiguration가 적용되거나 적용되지 않는 차이로 PasswordEncoder를 사용여부가 정해지는지 알았던 것이다.

현재 결론을 내린 것으론 PasswordEncoder를 사용하려면 bean으로 등록 후 사용하여야 한다는 점이다.
PasswordEncoder를 자동으로 bean으로 등록해주는 어노테이션이 있는지는 찾아봐야할 숙제인듯 하다.

덕분에 작은부분이지만 @SpringBootApplication 어노테이션에대해 알게되었고 SecurityAutoConfiguration이 인증기능을 자동으로 해주는 것과 또 @SpringBootApplication을 사용해 사용 여부를 선택할 수 있다는것을 알게된것 같다.

profile
개린이

0개의 댓글

관련 채용 정보