회원가입 시, 이메일 인증 기능이 필요하여 구현 중 아래와 같은 예외를 맞았다.
org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted.
gmail 설정도 문제가 없었고, application.yml에 메일 관련 설정도 제대로 했지만 계속 예외가 발생해 가볍게 서치해 보니 보안 관련 이슈였다.
보안 관련하여 구글이 발생시키는 예외다.
로그에 링크가 찍혔는데 한번 들어가 보자.
https://support.google.com/mail/?p=BadCredentials
여러 가지 방법이 있지만 앱 비밀번호 사용
으로 이번 이슈를 해결해 보자.
① 우선 계정 화면 좌측 탭의 보안
을 클릭한다.
② 2단계 인증
을 클릭하고 2단계 인증 설정을 한다.
③ 모바일 등의 기기를 통해 인증을 하면 된다.
④ 다시 계정 화면으로 돌아와 앱 비밀번호
를 설정한 후, 앱 비밀번호를 발급받자.
⑤ 생성
을 클릭하면 앱 비밀번호를 발급받을 수 있다.
Windows 컴퓨터용 앱 비밀번호
아래에 발급되며,
해당 앱 비밀번호
를 application.yml에 spring.mail.password
에 지정해 주면 된다.
정상적으로 동작되는 것을 확인할 수 있다.
회원 가입 시 생성되는 Token도 Redis에 잘 저장됨을 확인할 수 있다.