TIL 56일차

안광의·2021년 9월 8일
0

Today I Learned

목록 보기
56/64
post-thumbnail

시작하며

오늘은 인터넷 사용자들이 다른 웹사이트 상의 자신들의 정보에 대해 접근 권한을 부여할 수 있는 OAuth에 대해 학습하고 실제 Github에서 OAuth 인증을 통해 사용자 정보를 불러오는 스프린트를 진행하였다.

OAuth

정의
OAuth2.0은 인증을 위한 표준 프로토콜의 한 종류로, 보안 된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜 중 한 방법이다.

유저 입장에서 굉장히 많은 서비스를 이용하고 있고 각각의 서비스들을 이용하기 위해서는 회원가입 절차가 필요한 경우가 대부분이다. OAuth 를 활용한다면 자주 사용하고 중요한 서비스들(예를 들어 google, github, facebook) 의 ID와 Password만 기억해 놓고 해당 서비스들을 통해서 소셜 로그인을 할 수 있다.

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

관련 용어

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

마치며

흔히 접했던 OAuth 인증을 배우고 실제로 구현을 해보니, 내가 이용했던 서비스들이 어떤 방식으로 작동되고 보안에 이점이 있다는 사실을 알 수 있었다. 현재 많은 사이트들에서 사용하는 기능이기 때문에 구글, 네이버와 같이 유명한 사이트의 OAuth와 API에 대해서 더 공부하고 추후 프로젝트에도 활용하도록 해야겠다.

profile
개발자로 성장하기

0개의 댓글