Spring Security - OAuth2.0 적용하기

이승준·2021년 12월 9일

Spring Boot

목록 보기
1/1
post-thumbnail

OAuth2.0 란?


  • 어떠한 서비스를 사용자에게 제공하기 위해 스스로 애플리케이션 서버 구축 및 로그인과 회원 가입 서비스를 구현하기 위해 사용자로부터 개인 정보를 받아 저장 하고 관리 해야한다.
  • 즉, 인증(Authorization)을 서버에 구현해야한다.
  • OAuth2.0 을 사용한다면, 이러한 인증을 서드 파티 애플리케이션(Google, facebook, kakao...) 등에 위임을 할 수 있다.
  • 인증을 통해 획득한 토큰을 이용하여 정보소유자(Google, facebook, kakao...)에게 사용자 정보를 요청 할 수 있다.

OAuth2.0 요소


Client

  • OAuth2.0을 사용해 서드 파티 로그인 기능을 구현 할 자사 또는 개인 애플리케이션 서버

Resource Owner

  • 서드 파티 애플리케이션에 이미 개인 정보를 저장하고 있으며, Client가 제공하는 서비스를 이용하려는 사용자

Resource Server

  • 사용자의 개인정보를 가지고 있는 애플리케이션(Google, facebook, kakao...)서버
  • Client는 토큰을 이 서버에 넘겨 개인 정보를 얻을 수 있다.

Authorization Server

  • 권한을 부여(인증)해주는 서버
  • 사용자로 부터 이 서버로 ID, PW를 넘겨 Authorization Code를 발금
  • 해당 code를 이 서버에 넘겨 토큰을 발급 받을 수 있다.

Spring Security 와 OAuth2.0


  • 기본적으로 Spring Security는 Google, facebook, github, okta OAuth2.0 지원.

알아 두면 좋은 인터페이스

1. UserDetails

  • Spring Security에서 사용자 정보를 담는 인터페이스
  • Authentication Provider에서 해당 인터페이스를 이용하여 인증을 진행.
  • username, password, authorities(권한정보,ex. ROLE_USER, ROLE_ADMIN)을 담고 있다.

2. UserDetailsService

  • 사용자 정보를 가지고 오는 서비스를 제공하는 인터페이스
  • loadByUserName() 메서드에 사용자 정보 가지고 오는 로직을 구현해야한다.

3. OAuth2User

  • OAuth2 Provider로 제공된 Principal
  • OAuth2Authentication에 사용이 된다.
  • OAuth2 인증이 성공하게 되면, resource server로 부터 받아온 속성 정보(key,value 로 이루어져 있다.) 를 담고 있다.

Spring Security OAuth2.0 플로우 정리


참고

https://velog.io/@swchoi0329/스프링-시큐리티와-OAuth-2.0으로-로그인-기능-구현
https://loosie.tistory.com/302
https://www.baeldung.com/spring-security-5-oauth2-login
https://velog.io/@devsh/스프링-시큐리트-OAuth2-Filter-OAuth2AuthorizationRequestRedirectFilter-내부-로직
https://youtu.be/CWiwpvpCrro
https://hwannny.tistory.com/92
https://developers.payco.com/guide

profile
끊임없이 생각하는 주니어 웹 개발자입니다.

4개의 댓글

comment-user-thumbnail
2022년 6월 9일

3개의 답글