Chapter 05. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 - DoDaek/freelec-springboot2-webservice GitHub Wiki

  1. Spring Security
    • 스프링 시큐리티는 막강한 인증과 인가( 혹은 권한 뷰여 ) 기능을 가진 프레임워크
    • 사실상 스프링 기반의 애플리케이션에서는 보안을 위한 표준
    • 인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 적극적으로 권장

  1. 스프링 시큐리티와 스프링 시큐리티 OAuth2 클라이언트
    • 많은 서비스에서 로그린 기능을 id/password 방식보다는 구글, 페이스북, 네이버 로그인과 같은 소셜 로그인 기능을 사용
    • 로그인 기능 직접 구현시 구현 목록
      • 로그린 시 보안
      • 비밀번호 변경 및 찾기
      • 회원가입 시 이메일 혹은 전화번호 인증
      • 회원정보 변경

  1. 스프링 부트 1.5 vs. 스프링 부트 2.0
    • 스프링 부트 1.5에서의 OAuth2 연동 방법이 2.0에서는 크게 변경되었습니다.
      • 하지만, 설정 방법에 크게 차이가 없는 경우를 자주 봅니다.
      • 이는 spring-security-oauth2-autoconfigure 라이브러리 덕분입니다.
    • spring-security-oauth2-autoconfigure 라이브러리를 사용할 경우 스프링 부트 2에서도 1.5에서 쓰던 설정을 그대로 사용할 수 있습니다.
    • 하지만 책엣는 스프링 부트 2 방식인 Spring Security OAuth2 Client 라이브러리를 사용해서 진행
    • 스프링 부트 2 방식
      • spring-security-oauth2-autoconfigure 라이브러리를 썼는지
      • application.properties 혹은 application.yml 정보가 다음과 같이 차이가 있는지 비교
        spring:
          secutiry:
            oauth2:
              client:
                clientId: 인증 정보
                clientSecret: 인증 정보
        
    • 스프링 부트 1.5 방식에서는 url 주소를 모두 명시해야 하지만, 2.0 방식에서는 client 인증 정보만 입력하면 됩니다.
      • 1.5 버전에서 직접 입력했던 값들은 2.0 버전으로 오면서 모두 enum으로 대체되었습니다.
      • CommonOAuth2Provider라는 enum이 새롭게 추가되어 구글, 깃허브, 페이스북, 옥차의 기본 설정값은 모두 여기서 제공합니다.

  1. Spring Security OAuth2 Client 라이브러리를 사용하는 이유
    • 스프링 팀에서 기존 1.5에서 사용되던 spring-security-oauth 프로젝트는 유지 상태( maintenance mode )로 결정했으며 더는 신규 기능은 추가하지 않고 버그 수정 정도의 기능만 추가될 예정, 신규 기능은 새 oauth2 라이브러리에서만 지원하겠다고 선언
    • 스프링 부트용 라이브러리( starter ) 출시
    • 기존에 사용되던 방식은 확장 포인트가 적절하게 오픈되어 있지 않아 직접 상속하거나 오버라이딩 해야 하고 신규 라이브러리의 경우 확장 포인트를 고려해서 설계된 상태