TIL 211229

오늘도 삽질중·2021년 12월 29일
0

TIL

목록 보기
14/33

Today

코드 치는건 그래 뭐 할 수 있겠다 싶은데.. 로직이 이해가 안가니까 착잡하다.Oauth 이해안간다. 읽고 블로깅 했는데도 이게 맞나?싶다. 낼 다시 덤벼보자

👊Oauth

  • 타사의 사이트에 대한 접근 권한을 얻고, 그 권한을 이용하여 개발할 수 있도록 도와주는 프레임워크이다.
  • Oauth2.0은 인증을 위한 표준 프로토콜의 한 종류이다.
    -보안된 리소스에 액세스 하기위해 클라이언트에게 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜 중 한 방법이다.
  • 예를 들어 만일 김코딩이라는 사람이 웹사이트를 만들거라고 가정해보자. 코딩이는 웹 사이트에 글을 작성하면 자동으로 구글 캘린더에 기록이 되도록 만들고 싶어한다. 이를 어떻게 접근을 해야할까?

구글로부터 accessToken을 발급받고 그 토큰을 기반으로 원하는 기능을 구현한다.

accessToken이란 로그인을 하지 않고 인증을 할 수 있는 토큰이다. a유저가 우리 웹사이트에서 자신의 구글 캘린더에 대한 접근을 허용해준다면, AccessToken에는 해당 정보가 고스란히 남아있다. 따라서 그 정보를 토대로 캘린더에 글을 작성하고 삭제하고 할 수 있게 되는것이다.

그렇다면 이 accessToken을 어떻게 발급하냐? 하는 문제가 남아있다. AccessToken을 발급받기 위한 일련의 과정을 인터페이스로 정의해둔 것이 바로 Oauth라는 것이다.

💻 Oauth 용어

'김코딩'이라는 사람이 http://localhost:4000에서 'google calendar'기능을 사용하려는 상황이라고 가정해보자.

  • Resource Owner : 개인정보의 소유자인 '김코딩'을 의미한다.

  • Client : 제 3의 서비스로부터 인증을 받고자하는 서버이다. http://localhost:4000에 해당

  • Resource Server: '김코딩'의 개인정보를 저장하고 있는 서버를 의미한다. 여기서는 google이 된다. 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: 주어진 엑세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위

💻 AccessToken을 발급받기 위한 설정

'김코딩'이라는 사람이 http://localhost:4000에서 'google calendar'기능을 사용하려는 상황이라고 가정하자.
Client는 google에서 제공해주는 서비스를 이용하는 셈이다. 따라서 타 사의 서비스를 이용하기 위해서는 신청을 해야한다.

구글에게 우리 서버(http://localhost:4000)을 등록 신청해야한다.

💻 Authorization Code Grant type

액세스 토큰을 받아오기 위해서 먼저 Authorization Code를 받아 액세스 토큰과 교환하는 방법

  • Authorization code 절차를 거치는 이유는 보안성 강화에 목적이 있다.
    Client에서 client-secret을 공유하고 액세스 토큰을 가지고 오는 것은 탈취될 위험이 있기 때문에 Client에서는 authorization code만 받아오고 Server에서 Access token요청을 진행한다.


출처
코드스테이츠
https://blog.naver.com/PostView.naver?blogId=pjok1122&logNo=221584346870&parentCategoryNo=&categoryNo=39&viewDate=&isShowPopularPosts=false&from=postView

profile
의미없는 삽질은 없다1

0개의 댓글