Spring Security - OAuth2 && JWT (JSON Web Token) - 2

지난 글에서 https://infondgndg91.blogspot.com/2020/06/spring-security-oauth2-jwt-json-web.html 간단하게 OAuth 2.0 과 JWT (Json Web Token) 에 대해 정리를 해보았다. 이번 시간에는 OAuth 2.0 4가지 type 중 간단한, Resource Owner Password Credentials Grant 를 구현하려고 한다. 먼저 인증 서버에 대한 구현이다. 간단하게 개발 스펙을 정리해보자면, Spring Boot 2.3.1.RELEASE Java 14 guava 와 commons 는 애용해서 넣었다. 그리고 auth0 의 JWT, DB 는 mysql 을 사용했다. 당연히 security 와 web 을 추가했다. 그밖에, 롬복, 데브툴, 컨피규레이션 프로세서는 개발 시 많은 유용함이 있어서 당연히 사용했다. 다음은 application.yml 이다. 우선 jwt 와 관련된 내용들이며, 다음은 DataSource 내용들이다. DB 는 AWS RDS 를 사용했고, write 와 read 클러스터 구성이다. 따라서 write 와 read 를 각각 설정해주었다. 로깅은 개발 시 로깅을 디테일하게 켜서 보려고 해놓은거라서 중요한 것은 아니다. 그렇다면, 먼저 DataSource 설정이다. JdbcTemplate 을 사용려고 각각의 DataSource 마다 JdbcTemplate 을 Bean 으로 이용했다. 그 다음, 시큐리티 설정을 확인하자. AuthenticationProvider 를 구현한 커스텀 JWTAuthenticationProvider 을 사용했다. OAuth 2.0 Token 기반 인증 방식을 사용하기 때문에, 세션은 당연히 StateLess 무상태이다. csrf, header, formlogin 모두 disabled 했다. AuthenticationEntryPoint 를 구현하는 핸들러와 AccessDeniedHandler 를 구현하는 핸들러를 통해서...