TIL-211229

EBinY·2021년 12월 29일
0

TIL - Today I Learned

목록 보기
31/54

OAuth 2.0

  • 인증을 위한 표준 프로토콜의 한 종류

  • 인증 중개 메커니즘, 소셜 로그인 인증 방식 구현 기술

  • 보안된 리소스에 엑세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜

  • 이미 사용자 정보를 가지고 있는 웹 서비스(Github, google, facebook 등)에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후 이를 이용해 내 서버에서 인증이 가능하도록 하는 기술

  • 사용자 정보는 여전히 내 서버에 저장됨, 인증을 다른 서비스에 맡길 뿐, 접근 권한 관리는 여전히 내 서버의 몫

  • 인증을 웹서비스에 대신 맡기고, 인가는 내 서버에서 관리한다

    • Authentication: 인증, 클라이언트가 자신이 주장하는 사용자와 같은 사용자인지를 확인하는 과정
    • Authorization: 인가, 권한 부여, 클라이언트가 하고자 하는 작업이 허가된 권한인지를 확인
  • 결국, OAuth의 작동 방식을 알기 위해서는 기존 인증 방식에 대한 이해가 필수적

  • 유저 입장에서, 웹상에서의 서비스마다 회원가입 절차를 거쳐 서비스 별로 ID와 PW를 기억하는 것은 매우 번거로운 일, OAuth를 활용한다면 주요 서비스에 가입된 정보를 통해 새로운 서비스를 로그인하여 이용할 수 있음, 또한 보안상의 이점도 있음, 미리 인증 권한에 대한 허가를 받은 서비스를 통해 로그인하여 검증되지 않은 서비스나 APP을 이용할 때에 유저의 민감한 정보가 노출될 필요가 없어짐

  • OAuth에서 꼭 알아야 할 용어

    • Resource Owner: 액세스 중인 리소스의 유저, 김코딩의 구글 계정을 이용하여 App에 로그인할 경우, 이때 Resource owner은 김코딩
    • Client: Resource owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램, 클라이언트는 서버, 데스크탑, 모바일 또는 기타 장치에서 호스팅 할 수 있음
    • Resource server: client의 요청을 수락하고 응답할 수 있는 서버
    • Authorization server: Resource server가 액세스 토큰을 발급받는 서버, 즉 클라이언트 및 리소스 소유자를 성공적으로 인증한 후 액세스 토큰을 발급하는 서버
    • 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는 토큰의 권한을 정의, 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위
    • Authorization grant : 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명의 방법
  • Grant type: Client가 엑세스 토큰을 얻는 방법

    • Authorization Code grant Type

    • Refresh Token Grant Type


0개의 댓글