SMTP 콘솔로 찍던 javaMailSendor 대신 구글의 SMTP를 이용해 실제 메일을 보낸다. 먼저 구글 계정이 필요하다. 가입 완료했으면 계정관리 > 보안에 들어가 2단계 인증을 한다. 이후 2단계 인증 탭을 클릭하고 스크롤을 아래로 내리면 앱 비밀번호를 만들 수 있는 탭이 있다. 2021년부터 앱 비밀번호는 구글에서 권장하지 않는 방법이고 실제 이메일 서비스보다는 제한이 있지만 설정이 간단해서 사용한다. // application.yml spring: mail: host: smtp.gmail.com port: 587 username: ${mail.username} password: ${mail.password} properties: mail: smtp: auth: true timeout: 500..
회원가입 시 이메일 인증 하는 이유 본인인증이 포함되어야 무차별적 회원가입을 막을 수 있다. 로그인, 이메일 인증 과 같이 인증 진행 중 실패시에 응답을 애매하게 줘야 하는 이유 너무 친절한 인증 실패 메세지는 공격자에게 힌트를 주는 것과 같다. PasswordEncoder 사용자가 회원가입할 때 제공하는 비밀번호를 평문으로 DB에 저장하면 절대 안되고 무조건 암호화 해야한다. Spring Security가 제공하는 PasswordEncoder를 통해 어떤 알고리즘을 사용해 암호화할지 정할 수 있다. 평소에 같은 평문을 암호화한 해쉬값이 맨날 달라진건 알았지만 왜 그런건진 몰랐는데 이는 솔트 때문이다. // BcryptPasswordEncoder @Override public String encode(C..
댓글 수정, 삭제를 구현하기 전에 Spring Security와 Thymeleaf로 게시글을 작성자만 삭제, 수정 가능하게 리팩터링 한다. Spring Security에서 관리하는 세션을 Thymeleaf 에서 접근할 수 있다. https://www.thymeleaf.org/doc/articles/springsecurity.html Thymeleaf + Spring Security integration basics - Thymeleaf Have you switched to Thymeleaf but your login and error pages are still using JSP? In this article we will see how to configure your Spring application ..