Spring Security와 OAuth2(1) - 개념 알아보기

dev_Shawn·2022년 4월 24일
0

SpringBoot

목록 보기
6/15
post-thumbnail

해당 내용은 이동욱님 저서 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 공부하며 정리한 내용입니다.

Spring Security

  • 스프링 기반 애플리케이션의 보안을 위한 표준
  • 인증(Authentication)과 인가(Authroization) 기능을 가진 프레임워크
    • 인증 : 어떤 개체(사용자 또는 장치)의 신원을 확인하는 과정.
      ex) 회원가입, 로그인 등
    • 인가 : 어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지를 검증하는 것, 즉 접근 권한을 얻는 일.
      ex) 게시물 등록, 수정, 삭제 등

여기를 눌러 인증과 인가 더 자세히 알아보기

  • 스프링의 다른 프로젝트(MVC, Data, Batch 등)와 마찬가지로 확장성을 고려하여 설계되었기 때문에 다양한 요구사항을 손쉽게 추가하고 변경할 수 있다.

OAuth

  • 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준.
  • 일반 사용자들에게 익숙한 '소셜로그인'이 OAuth를 통해 구현된 기능.
  • 로그인 시 보안, 이메일 혹은 전화번호 인증, 비밀번호 찾기, 비밀번호 변경 등 직접 로그인 구현 시 신경써야할 부분과 추가 기능을 OAuth 제공 플랫폼에 맡기면 되어 비즈니스 로직 개발에 집중 할 수 있다.

Spring Boot 1.5와 2.0에서의 OAuth2 연동 방법 차이

설정의 간편함

스프링 부트 2.0으로 오면서 OAuth2의 설정 방법이 훨씬 간편해졌다.
두 버전의 application.properties 혹은 application.yml 설정 정보를 살펴보면 아래와 같다.

  • 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
  • 2.X에서의 설정 방법
spring:
	security:
    	oauth2:
        	client:
            	clientId: 인증정보
                clientSecret: 인증정보

1.5에서는 url 주소를 모두 명시해야 하지만 2.0에서는 client 인증 정보만 입력하면 된다.
2.0에서 CommonOAuth2Provider라는 enum이 새롭게 추가 되었는데, 여기서 구글, 깃허브, 페이스북, 옥타의 기본 설정값을 제공한다.
이 enum으로 1.5에서 직접 입력하던 설정값을 대체한다.
(하지만 네이버와 같이 CommonOAuth2Provider에서 제공하지 않는 플랫폼의 정보는 개발자가 별도로 추가해줘야 한다.)

여기를 눌러 Enum CommonOAuth2Provider 확인하기

신규 기능 추가와 확장성

스프링 팀에서 1.5에서 사용되던 spring-security-oauth 프로젝트는 유지 상태로 결정했으며, 더는 신규 기능을 추가하지 않고 버그 수정 정도의 기능만 추가될 예정이다. 신규 기능은 oauth2 라이브러리에서만 지원하겠다고 했다.

또한 기존에 사용되던 방식은 확장 포인트가 적절하게 오픈되어 있지 않아 직접 상속하거나 오버라이딩이 필요하지만, 신규 라이브러리는 확장 포인트를 고려해서 설계되었다.

1.5에서의 설정을 2.0에서 그대로 사용하기

spring-security-oauth2-autoconfigure 라이브러리를 사용하면 1.5에서의 설정 방식을 2.0에서도 그대로 사용할 수 있다.
1.5버전의 레퍼런스를 적용하고 싶거나 기존에 안전하게 작동하던 1.5버전의 방식을 사용하고 싶을 때 유용하다.


참고

profile
안주는 술 마실 때나

0개의 댓글