99클럽 29일차 TIL: OAuth

2024. 5. 2. 18:36개발 공부

728x90
반응형

#1. 오늘의 학습 키워드

OAuth에 대해

  • 인증에는 여러 방법이 있고 저번에는 JWT 에 관한 포스트 글을 작성하였다.
    • https://second-brain.tistory.com/46
    • 제일 익숙했던 방식이고, 실제로 사용 중이던 방식이 JWT 인증 방식이었다.
    • 다른 인증 방식에 대해서도 알아보자.
      • 이번엔 OAuth 에 대해 알아봅시다.

#2. 공부한 내용

1. OAuth

- 사용자들이 특정 서비스를 입력할 때 직접 비밀번호를 입력하지 않고, 연동되는 외부 웹 / 앱의
인증 정보를 통해 해당 서비스를 이용하는 방식의 접근 위임을 위한 개방형 표준.
  • 실생활에서 인터넷을 조금만 하더라도 흔히 접할 수 있는 방식의 인증 절차다.
    • ex) 프로그래머스 사이트
      • 카카오 로그인
      • 네이버 로그인
      • 구글 로그인
      • 등등..

1) 구성 요소

  • Resource Owner
    • 개인정보 소유자
    • 즉 서비스를 이용하려는 사람
  • Client
    • 어플리케이션 서버
    • 위 예시에서는 프로그래머스 서버
  • Authorization Server
    • 권한을 부여해주는 서버
    • 사용자 및 Client 는 해당 서버로 ID, PW 전송 → Token 전달받음
  • Resource Server
    • 개인정보 서버
    • 즉 개인정보 소유자의 개인정보를 가지고 있는 어플리케이션 서버
    • 위 예시에서는 카카오, 네이버, 구글 등
  • Access Token
    • 접근 권한을 인가했음을 나타내는 자격 증명.
    • Authorization Server가 Resource Owner 로부터 정확한 ID, PW 를 전달받고 Authorization Code로 준다.
    • 그리고 Client 는 Resource Owner 로부터 Authorization Code 를 전달 받고, 그 후 Authorization Server 로 해당 코드를 통해 Access Token 을 요청한다.
  • Refresh Token
    • Authorization Server 는 비교적 짧은 유효기간을 갖는 Access Token 과 비교적 긴 유효기간을 갖는 해당 Refresh Token을 동시에 제공한다.

2) OAuth 를 통한 인증 프로세스

  • 사용자가 프로그래머스 사이트에 접속하여 네이버 아이디로 로그인 한 후 서비스를 이용하는 절차를 UML 다이어그램을 통해 표현했다.

 

2. Spring 에서의 사용

  • JWT 에서와 마찬가지로 Spring 에서는 Spring Security 프레임워크로 OAuth 인증을 지원한다.
    • 이때는 OAuth 방식을 사용하므로 OAuth 2.0 을 같이 사용한다.

구현

spring.security.oauth2.client.registration.google.client-id=(클라이언트 ID)
spring.security.oauth2.client.registration.google.client-secret=(클라이언트 보안 비밀번호)
spring.security.oauth2.client.registration.google.scope=profile,email
  • 스프링 시큐리티 설정
    • 빌드 그래들
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
  • 로그인 정보를 담는 Entity 설정 (JPA)
    • role entity 생성
    • user entity 생성
    • user repository 생성
      • User DAO - CRUD 메서드
  • Service 코드 및 Config 작성
    • 로직


#3. 오늘의 회고

  • 정리:
    • OAuth 는 인증 및 인가를 위한 개방형 표준 프로토콜로, 서드파티 어플리케이션에서 사용자의 데이터에 접근할 수 있는 권한을 부여하는 데에 사용된다.
    • 장점:
      • 사용자 편의성
        • 따로 회원가입할 필요가 없다.
      • 보안 강화
        • 사용자의 계정 정보를 통한 인증이 아닌 Access Token을 통해 수행
      • 유연성
        • 다양한 어플리케이션 간 통합을 용이하게 도와줌
        • 다양한 인증 방식을 지원
728x90
반응형