[네트워크] JWT/OAuth

Hyo Kyun Lee·2021년 5월 23일
0

네트워크

목록 보기
12/20

1. 개념

  • JWT
    JSON Web Token
    다수 사용자의 Cookie 과요청으로 인한 세션의 과부하를 막고,
    보안적으로 안전한 데이터 송수신을 위해 고안된 사용자정보 인증방식

  • OAuth
    Open Authorization
    Third Party(제3자 혹은 타 웹서비스)에서 사용자의 직접적인 인증절차없이 정보접근 및 권한사용을 위한 Resource protocol(통신규약)의 일종

2. 추가개념

  • Cookie
    ▶ Client(사용자)의 정보와 데이터가 담긴 txt파일의 일종.
    ▶ 웹사이트(서버)에 저장해 놓고, 웹사이트 방문시 수시로 정보가 업데이트.

  • Session
    ▶ 사용자 정보 등 보안적으로 민감한 데이터를 저장하는 공간.
    ▶ 사용자로부터 받은 Session id를 쿠키에 담아 전달받는다.

3. OAuth 세부개념

  • 역할
    페이스북/카카오톡 등의 인증정보를 다른 웹사이트 로그인에 사용한다.
    웹사이트 별도의 인증정보가 필요없고 간편하고 원활한 인증이 가능.

Google 로그인시 카카오페이지 로그인을 이용할 경우 OAuth 흐름
Google = Client, 카카오페이지 = Resource Server

A. Client(=Google) 등록
*카카오페이지 인증정보에 접근하기 위한 Client 등록

▶ Client가 해당 서비스의 Resource Server에 접근하여 데이터를 요청하고, 이를 전달받기 위한 등록절차가 필요.
▶ Resource Server 측에서 Client 정보를 확인하여, Client별 식별자 및 유저정보가 담긴 데이터를 전달할 수 있도록 설정한다.
▶ Client가 Resource Server에게 name / Callback URL (Resource Server가 전달해주는 REST API나 데이터를 저장하기위한 별도의 공간) 제공

B. Resource Server(=카카오 페이지)가 Client에게 등록승인
*Resource 정보전달을 위한 key전달

▶ Resource Server에서 해당 정보를 이용하여 Client 정보를 생성하고, 유저정보(Client_id)와 인증서(Client_secret)를 Client에게 전달

C. Resource Owner(=사용자)의 Resource server 로그인
*사용자의 카카오페이지 로그인

▶ Resource Owner가 Google에 접속하여 카카오페이지 로그인으로 로그인 시도
▶ Google이 사용자에게 Client_id와 Callback URL를 부여하고, 카카오페이지에서 로그인하라고 요청
▶ 전달받은 Client_id와 Callback URL를 카카오페이지에 전달하면서 카카오페이지에 로그인하고, 카카오페이지는 해당 로그인을 승인
▶ 승인하면서 Owner에게 Authorization code를 같이 전달

D. Resource Owner의 Client 로그인
*Resource Server의 유저정보 전달 및 Client에서의 로그인 최종 승인

▶ 사용자가 Client에게 authoization code를 Callback URL에 전달
▶ Client는 사용자에게 받은 Authorization code와 Resource Server에게 받은 Client_secret를 Server에 전달
▶ Resource Server가 이 두 데이터를 전달받아, Access_token을 부여
(*코드교환, Code Exchange)
▶ Client는 Access_token을 통해 유저정보를 확인하여, 자신의 웹사이트를 이용할 수 있도록 로그인 승인

4. 참조사이트

https://cheese10yun.github.io/spring-oauth2-provider/#null
https://hs2g5.tistory.com/entry/OAuth

0개의 댓글