OAuth2.0이란?

citron03·2022년 2월 18일
0
  • Oauth는 우리가 흔히 볼 수 있는 소셜 로그인의 인증 방식이다.
    🍉 카카오, 구글, 깃허브, 네이버 아이디 등을 이용한 로그인이 Oauth를 통해서 구현되어있다.
    🍉 Oauth(Open Authorization)는 인증을 중개해준다.
  • 이미 사용자의 서비스를 가지고 있는 웹서비스에서 대신 사용자에 대한 인증을 해주고, 이를 통해서 접근 권한에 대한 토큰을 받아 서버에 접근할 수 있게 된다.
  • Oauth2.0는 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화한 표준 프로토콜의 한 종류이다.
  • 또한, OAuth를 이용하여 서버에서 사용자 관리에 대한 부담을 줄일 수 있다.
    🍸 OAuth 없이 사용자 인증을 구현한다면, 회원가입 관리, 비밀번호 변경, 회원정보 변경, 이메일 인증, 로그인 보안 등의 절차를 모두 스스로 구현해야 한다.

🥧 Authentication과 Authorization

  • Authentication(인증)은 로그인과 같이 사용자가 누구인지, 인증된 사용자인지 확인하는 과정이다.
  • Authorization(권한 부여)는 인증된 사용자에게 서비스에 대한 접근 권한을 부여하여 보안된 리소스에 접근할 권한을 확인한다.
  • OAuth는 Authentication을 지원해주지만, Authorization는 서버에서 관리해야 한다.

🥛 OAuth를 사용함으로써, 사용자는 하나의 계정으로 여러 웹 app을 사용할 수 있고, 검증되지 않은 App에서 OAuth로 중계하여 인증함으로써, 보안에 더 안전할 수 있다. 🥛

OAuth에서 알아야할 용어들

  • Resource Owner: 액세스 중인 resource의 사용자입니다.
    자신의 구글 계정을 이용하여 App에 로그인할 경우, 이때 Resource owner은 내가 된다.

  • Client: Resource owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램이다.
    클라이언트는 서버, 데스크탑, 모바일 또는 기타 장치에서 호스팅할 수 있다.

  • Resource server: client의 요청을 수락하고 응답할 수 있는 서버이다.

  • Authorization server: Resource server가 액세스 토큰을 발급받는 서버이다.
    즉, 클라이언트 및 리소스 소유자를 성공적으로 인증한 후 액세스 토큰을 발급하는 서버를 뜻한다.

  • Authorization grant: 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명의 유형이다.
    grant type은 클라이언트 app이 액세스 토큰을 얻는 방법을 의미한다.
    🍶 Authorization code grant typeRefresh token grant type이 있다.
    🍶 Authorization code grant type은 액세스 토큰을 받아오기 위해서 먼저 authorization code를 받아 액세스 토큰과 교환하는 방법이다. 이 과정을 거침으로써 보안성을 강화한다.
    🍶 Refresh token grant type은 access token이 만료되었을 때, 새로운 access token을 발급하는 데 쓰인다.

  • Authorization code: access token을 발급받기 전에 필요한 code다.
    client ID로 이 code를 받아온 후, client secret과 code를 이용해 Access token을 받아온다.

  • Access token: 보호된 리소스에 액세스하는 데 사용되는 credentials다. Authorization code와 client secret을 이용해 받아온 이 Access token으로 이제 resource server에 접근을 할 수 있다.

  • Scope: scope는 토큰의 권한을 정의한다.
    주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위를 의미한다.

참고 자료 출처 : 코드 스테이츠

profile
🙌🙌🙌🙌

0개의 댓글