OAuth2.0

Minions·2023년 3월 31일
0

OAuth

목록 보기
1/1
post-thumbnail

개요

OAuth2.0 (Open Authorization 2.0)
인증을 위한 개방형 인증 프로토콜로 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 정보에 대해 애플리케이션에게 접근 권한을 부여할 수 있는 수단.
위의 말을 보면 굉장히 애매모호하다는 느낌이 들었고, 쓴이가 이해한 것을 간단하게 말하자면, 사용자(Resource Owner)가 특정 사이트(Third-party)에 접속하기 위해 회원가입이 아닌 구글, 네이버, 카카오(Resource Server)와 같은 보편적인 계정으로 로그인을 함으로 특정 사이트에게 사용자에 대해 인증 및 정보를 제공하고, 사이트를 이용할 수 있도록 하는 프로토콜이라고 정의를 내렸다.

주요 용어

쓴이는 OAuth2.0에 대해 공부를 하면서 4개의 주요 용어를 접하게 되었다.

  • Authentication(인증): 접근 자격이 있는지 검증하는 단계.
  • Authorization(인가): 자원에 접근할 권한을 부여하는 것.
  • Access Token: 리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 토큰.
    -> 만료기간이 존재한다.
  • Refresh Token: Access Token 만료 시 갱신을 위한 용도로 사용되는 토큰.
    -> 만료기간이 존재한다. Access Token보다 상대적으로 길다.

이상으로 주요 용어의 정의를 간단하게 작성하였다. 용어 중 토큰 2가지는 자주 사용된다. 또한, 인증과 인가에 대해서도 헷갈릴 수 있다고 생각되니 정확하게 개념을 잡아두면 좋다. 참고로 쓴이는 인증과 인가에 대해 헷갈릴 때가 많아서 볼 때마다 외우는 중이다.

역할

이어서 OAuth를 공부할 때 자주 이야기 되는 역할을 알아보려고 한다. 실제로 개요를 설명할 때 몇 가지 언급을 하였다.

  • Resource Owner(리소스 소유자)
    보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체. 클라이언트를 인증하고, 권한 획득 자격을 부여하는 역할. 개념적으로 리소스 소유자가 자격을 부여해주는 역할이지만 실제로는 권한 서버가 중개 역할을 수행하고 있다.
  • Client
    보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션. Third-party라고 생각하면 이해가 될 듯하다.
  • Resource Server
    사용자의 보호된 자원을 호스팅하는 서버.
  • Authorization Server(권한 서버)
    인증/인가를 수행하는 서버. 클라이언트의 접근 자격을 확인하고 Access Token을 발급하여 권한을 부여하는 역할을 수행.

리소스 서버와 권한 서버의 경우, 간편로그인을 제공하는 사이트에 존재한다고 보면 된다. 예를 들어, Velog에 접속을 할 때, 구글 간편로그인을 하면 쓴이의 정보는 구글이 가지고 있게 되며, 쓴이의 구글 아이디와 비밀번호를 확인하여 구글이 Velog에게 쓴이의 정보에 접근 권한을 부여하게 된다. 즉, 리소스도, 권한도 구글에서 제공을 하는 것이다.

그럼 문뜩 의문이 생길 것이다. 분명, 리소스 소유자가 자격을 부여해준다고 말한 쓴이의 글이 떠오를텐데 자세히 읽어보면 실제로는 권한 서버가 중개자 역할을 하기 때문에 외부적으로는 쓴이가 주는 것처럼 보이지만 내부적으로 중개자가 권한을 부여하는 것이다.

마무리

오늘은 OAuth2.0에 대해 간단한 설명, 용어, 역할에 대해 정리해보았다. 다음에는 OAuth의 프로세스, 권한 부여 방식에 대해 정리하려고 한다. 또한, 글만 적는 것이 아니라 실제 예제를 찾아보면서 프로젝트를 개발하고 있다. 다음 글에서는 깃 주소도 공유하여 주기적으로 업데이트 되는 코드도 사용해보도록 하겠다.

profile
Junior Software Deveoper

0개의 댓글