OAuth2.0 작동 방식 및 인증서버 로그인 과정

weekbelt·2023년 11월 21일
0
post-thumbnail

1. OAuth2.0이란?

OAuth는 Open + Authorization의 약자로 인가를 위한 산업 표준 프로토콜입니다. 애플리케이션이 사용자를 대신하여 사용자의 자원에 대한 제한된 액세스를 얻기 위해 승인 상호 작용을 함으로써 애플리케이션이 자체적으로 액세스 권한을 얻도록 합니다. 쉽게 말해서 사용자가 속한 사이트의 보호된 자원에 대하여 애플리케이션의 접근을 허용하도록 승인하는 것을 말합니다.

예를 들어 페이스북 같은 웹사이트에서 새로운 앱을 사용할 때, 그 앱에 본인의 페이스북 비밀번호를 주지 않고도 페이스북의 사진이나 친구 목록 같은 특정 정보에 접근할 수 있게 애플리케이션에게 대신 접근할 수 있는 권한을 줄 수 있는데 모든 정보에 대한 권한을 주는 것이 아니라 페이스북의 Resource Owner가 제한한 부분까지만 권한을 부여합니다.

2. OAuth2의 구성요소

2.2 Resource Server (리소스 서버)

  • 사용자의 정보나 서비스를 저장하고 관리하는 서버. 예를 들어, 구글, 카카오, 네이버와 같은 회사들이 사용자의 이메일, 사진, 연락처 등의 리소스를 보관하는 곳
  • 사용자가 이메일을 보내거나, 사진을 업로드하거나, 친구에게 메시지를 보내는 등의 행동을 할 수 있게 해주는 서비스를 제공하는 서버

2.1 Resource Owner (리소스 소유자)

  • 구글, 카카오, 네이버를 사용하는 사용자. 자신의 데이터나 정보에 대한 접근권한을 가지고 있는 사람.

2.3 Client (클라이언트)

  • 사용자의 데이터에 접근하려는 애플리케이션 또는 서비스를 의미(ex. robiG 인증서버)

2.4 Authorization Server (인가서버)

  • 사용자의 승인을 받아서 클라이언트에게 AccessToken을 발급하는 서버
  • 사용자의 신원확인 후 해당 사용자가 클라이언트 애플리케이션에 특정 리소스에 대한 접근 권한을 부여할 수 있게 하는 역할

3. 승인 코드 그랜트 유형의 인증방식

4. robiG 인증서버 인증 flow

  1. UI에서 특정 Resource server에 접근한다(athena, data backend, agent backend….)
  2. JwtTokenFilter에서 토큰 검증을 하는데 accessToken이 없으므로 인증이 실패한다.
  3. 인증을 받기 위해 /oauth2/authorization/{registrationId}로 리다이렉션을 한다.
  4. OAuth2AuthroizationRequestRedirectFilter를 통해서 인가서버와 인증단계를 시작한다.
  5. OAuth2AuthenticationFilter에서 인가서버에 accessToken을 요청한다.
profile
백엔드 개발자 입니다

0개의 댓글