본문 바로가기
TIL

내일배움캠프 9주차 Spring OAuth 2.0

by 율량동박씨 2024. 6. 12.

오늘의 키워드

  • OAuth 2.0

오늘의 내용

OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 접근 위임을 위한 개방형 표준이다. 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜이다.

  • Resource Owner: 자원 소유자를 말하며 일반적으로 사용자를 의미한다.
  • Client: 자원 소유자를 대신해 서버에 접근하는 애플리케이션이다.
  • Authorization Server: 자원 소유자의 권한을 검증하고 액세스 토큰을 발급하는 서버이다.
  • Resource Server: 보호된 자원에 대한 요청을 처리하고 클라이언트의 요청을 수락하기 위해 액세스 토큰을 검증하는 서버이다.
  • Access Token: 클라이언트가 자원 서버에 접근할 때 사용하는 자격 증명으로 제한된 시간에만 유효하다.
  • Refresh Token: 액세스 토큰이 만료된 후 새로운 액세스 토큰을 얻기 위해 사용하는 자격 증명이다.

현재는 OAuth 2.0을 주로 사용하며 주요 흐름은 다음과 같다:

  • Authorization Code Grant (권한 부여 코드 플로우): 가장 일반적인 흐름으로, 클라이언트가 인증 서버로부터 권한 부여 코드를 받고 이를 사용해 액세스 토큰을 요청한다.
  • Implicit Grant (암시적 플로우): 클라이언트 측 애플리케이션에 주로 사용되며, 권한 부여 코드 없이 액세스 토큰이 직접 발급된다.
  • Resource Owner Password Credentials Grant (자원 소유자 비밀번호 자격 증명 플로우): 사용자가 자신의 자격 증명을 직접 클라이언트에 제공할 때 사용되며, 보안이 상대적으로 낮아 신뢰할 수 있는 클라이언트에서만 사용해야 한다.
  • Client Credentials Grant (클라이언트 자격 증명 플로우): 클라이언트가 자원 소유자를 대신하지 않고 자신을 인증할 때 사용되며, 주로 서버 간 통신에 사용된다.

오늘의 회고

오늘은 OAuth 2.0에 대해 이해하는 시간을 가졌다. OAuth 2.0은 다양한 인증 및 권한 부여 시나리오를 지원하며, 이를 통해 사용자와 애플리케이션 간의 보안이 강화된다. 앞으로 OAuth 2.0을 활용한 프로젝트를 진행할 때 이 지식을 적극적으로 활용해보고 싶다. 또한 새로운 주차가 되면서 새로운 팀원들과 만났는데 아직 많이 어색해서 빨리 친해져서 편해졌으면 좋겠네 다들 I만 있어서 힘들다....