OAuth란

jung_ho9 개발일지·2023년 1월 9일
0

HTTP/네트워크/서버

목록 보기
15/15

OAuth 란 ?


서버에서 인증을 처리해주는 것과 달리, OAuth는 인증을 중개해주는 메커니즘으로, 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다.

즉, 이미 사용자의 정보를 가지고 있는 (GitHub, Facebook 등)에서 인증을 대신해주고, 접근 권한에 대한토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해진다.

특정 웹 앱의 서비스를 이용하기 위해서 해당 웹 앱에 회원가입을 하는 것이 우선이었다. 하지만 소셜 로그인이 보편화된 현재는 대부분의 사람들이 네이버 또는 카카오에 이미 가입된 계정을 통해 빠르게 서비스에 가입하는 것을 택하고 있다.

뿐만 아니라 서비스를 구현하는 개발자도 신규 회원가입이나 회원 관리를 신경쓰지 않아도 되기 때문에 사용자와 기업 모두 소셜 로그인을 선호하고 있는 추세이다.

유저 입장에서 생각해보면, 각각의 서비스들을 이용하기 위해서 회원가입 절차가 필요한 경우가 대부분이고 각각의 서비스별로 ID와 password를 기억하는 것은 매우 귀찮은 일이다.

하지만 OAuth를 활용한다면 자주 사용하고 중요한 서비스들의 Id 와 password만 기억해놓고 해당 서비스들을 통해 외부 서비스로 소셜 로그인을 할 수 있다.

또한, OAuth는 보안상에 이점도 있다. 검증되지 안은 App 에서 OAuth를 사용하여 로그인한다면, 직접 유저의 민감한 정보가 App에 노출될 일이 없고 인증 권한에 대한 허가를 미리 유저에게 구해야 하므로 더 안전하게 사용할 수 있다.

OAuth에서 꼭 알아야 할 용어


  • Resource Owner : 사용자이며 정보 제공자이기도 하기 때문에 Resource Owner라고 한다.

  • Client : Resource Owner를 대신하여 보호된 리소스에 액세스하는 애플리케이션이다.

  • Local Server : Client의 요청을 수락하고 응답할 수 있는 서버다.

  • Resource Server : 사용자의 정보를 저장하고 있는 서버다.

  • Authorization Server : Client가 Access Token을 얻는 방법을 의미한다. 다음과 같은 방법이 주로 사용된다.

  • Authorization Grant : Client가 Access Token을 얻는 방법을 의미한다. 다음과 같은 방법들이 주로 사용된다.

    • Authorization Code Grant Type
    • Refresh Token Grant Type
  • Authorization Code: Authorization Grant의 한 타입으로 Access Token을 발급받기 위한 Code를 의미합니다.

  • Access Token : 보호된 리소스에 액세스하는 데 사용되는 인증 토큰입니다. 이 Access Token으로 이제 Resource Server에 접근할 수 있다.

  • Refresh Token: 발급받은 Access Token이 만료될 시 Refresh Token을 통해 새로운 Access Token을 받급받을 수 있다.

OAuth 인증 흐름


Authorization Code Grant Type

Authorization Code를 받아 Authorization Code를 통해 Access Token을 받는 방식을 말한다. 이 유형은 Access Token이 사용자나 브라우저에 표시되지 않는다는 것을 의미하므로 Access Token이 다른 사람에게 노출될 위험이 줄어든다.

Refresh Token Grant Type

Authorization Code Grant Type으로 Access Token을 발급받은 후 Access Token이 만료된 경우 Refresh Token을 활용해 새로운 Access Token으로 교환하는 데 사용된다. 이를 통해 사용자와의 추가 상호 작용 없이 계속 유효한 액세스 토큰을 가질 수 있다.

Github OAuth Apps 설정

  • Client Id 와 Client secrets 은 외부에 노출되지 않도록 환경변수에 담아 활용해야 한다.

  • Homepage URL 은 클라이언트 주소를 적어준다.

  • Authorization callback URL 은 인증 받은 토큰을 받을 URL 을 적어준다.

profile
꾸준하게 기록하기

0개의 댓글