Spring Security는 인증과 인가기능을 가진 프레임워크이다.
Spring기반의 애플리케이션에서는 보안을 위한 표준으로 사용된다고 해도 무방하다.
스프링 시큐리티 외에도 인터셉터, 필터 기반으로 보안 기능을 구현할 수 있지만 스프링 시큐리티를 이용하여 구현하는 것을 적극적으로 권장하고 있으니 자세히 공부할 필요가 있다고 생각한다.
스프링부트 1.5에서의 OAuth2 연동 방법이 2.0에서는 크게 변경되었지만 인터넷 자료들을 찾아보면 설정 방법에 차이가 크게 없는 경우를 자주 볼 수 있다.
이는 spring-security-oauth2-autoconfigure라이브러리 덕분이다.
위 라이브러리를 사용하면 스프링부트 1.5에서 사용하던 설정을 2.0에서 그대로 사용할 수 있다.
만약 자료를 검색할 때 스프링부트2 방식의 자료를 찾고 싶은 경우에는 먼저 spring-security-oauth2-autoconfigure라이브러를 사용했는지 확인하고 application.properties(또는 .yml) 정보를 확인해야 한다.
[SpringBoot 1.5]
google :
client :
clientId: 인증정보
clientSecret: 인증정보
accessTokenUri: https://accounts.google.com/o/oauth2/token
userAuthorizationUri: https://accounts.google.com/o/oauth2/auth
clientAuthenticationScheme: form
scope: email, profile
resource:
userInfoUri: https://www.googleapis.com/oauth2/v2/userinfo
[SpringBoot 2.x]
spring:
security:
oauth2:
client:
clientId: 인증정보
clientSecret: 인증정보
SpringBoot2.x 방식이 훨씬 간결하다는 것이 한눈에 보인다.
이는 1.5버전에서 직접 입력했던 값들이 2.0버전에서는 enum으로 대체되었기 때문이다.
CommonOAuth2Provider라는 enum이 새롭게 추가되어 구글, 깃허브, 페이스북, 옥타의 기본 설정값은 모두 여기서 제공된다.
이 외에 다른 소셜 로그인은 직접 추가해 주어야 한다.
위에서 말했던 것처럼 라이브러리를 사용하면 스프링부트 1.5에서 사용하던 설정방법을 그대로 사용할 수 있다.
또한, 많은 개발자들이 기존에 안전하게 작동하던 코드를 사용하기 위해 위에서 언급한 라이브러리를 사용하였다.
하지만 책에서는 스프링 부트 2.0방식을 사용한다.
이유는 아래와 같다.