본문 바로가기
세미나

구글 로그인 연동으로 배우는 OAuth 인증 - 1

by 성건희 2019. 5. 14.
반응형

[KISA 핀테크 기술지원센터] 기술세미나 :: 구글 로그인 연동으로 배우는 OAuth 인증 - 1

일시 : 2019.05.14 (화) 16:00 - 2019.05.15 (수) 18:00

강사 : 생활코딩 이고잉님

OAuth가 왜 필요할까?

  • Access Token이라는 제한된 권한을 사용할 수 있는 임시비밀번호를 발급해줌 (보안상 안전)
  • 과정을 자동화 해 줌 (사용자 모르게)

OAuth 전에는..

사용자로부터 구글이나 페이스북의 아이디와 비밀번호를 받는다.

그것을 데이터베이스에 따로 저장해둠.

이 방식은 심플하지만 단점이 있음.

Resource Owner (사용자) 입장 : 누군지도 모르는 서비스에게 ID와 PWD를 알려줘야함

Resource Server (구글, 페북..) 입장 : 누군지도 모르는 Client에게 ID와 PWD를 알려줘야함

너무 위험하다.

OAuth를 통한 해결

권한에 해당하는 임시 비밀번호 발급 => Access Token

사용자는 내부적으로 Access Token으로 사용한다는 사실을 알지못함.

자동으로 Access Token에 대한 정보를 Client에게 전달

실습 목표

  1. 인증하기
  2. API 접속후 뭐 하나 해보자

실습 순서

  1. widget 방식 : 쉽다, 자유롭지X, 보안상 안전
  2. raw 방식 (직접 만드는) : 쉽다, 자유로움, 안전을 획득하기 어렵다
  3. library 방식 : 어렵다, 자유로움, 완전 안전

Web Server for Chrome 설치

  • 간단한 웹 서버

# widget 방식 실습

'Web Server for Chrome' 실행 후 'CHOOSE FOLDER' 지정

지정한 폴더안에 widget.html 생성 후 구글 OAuth widget 내용을 복사 붙여넣기

https://console.cloud.google.com을 통해 OAuth연동을 한 뒤

widget.html의 content 부분을 클라우드의 client_id로 바꿈

client_id : 사업자 등록번호, 노출되도 상관 X

client_secret : 공인인증서, 절대로 노출되면 X

너무 간단함.

# raw 방식 실습

OAuth 2.0 for Client-side Web Applications에서 메뉴얼 확인

구글 캘린더를 사용하기 위해 구글에게 허락을 받아보자!

  • Google Cloud Platform - 라이브러리 - Google Calendar API

JS 클라이언트 라이브러리 : 라이브러리를 사용할 경우

OAUTH 2.0 엔드 포인트 : raw 레벨로 직접 구현할 경우

raw.html 페이지 생성

메뉴얼 step 2 샘플 복사

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&
 include_granted_scopes=true&
 state=state_parameter_passthrough_value&
 redirect_uri=http%3A%2F%2Foauth2.example.com%2Fcallback&
 response_type=token&
 client_id=client_id

scope : 사용할 기능의 일부

redirect_uri : Access Token을 어디로 받을것인가

구글 캘린더의 scope는 뭐가 있을까?

주소를 붙여넣을 때는 인코딩 작업을 거친 URL을 copy해야 한다.

수정한 raw.html은 다음과 같다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <a href="https://accounts.google.com/o/oauth2/v2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar&include_granted_scopes=true&state=state_parameter_passthrough_value&redirect_uri=http%3A%2F%2Flocalhost%3A8887%2Fraw_callback.html&response_type=token&client_id=898088711348-0bg7rc6abjssqiitkecq50tmnmq65ls0.apps.googleusercontent.com">Login for Google</a>
</body>
</html>

Access Token을 배달받은 http://localhost:8887/raw_callback.html 주소를 Google Cloud Platform에 등록해준다.

실제 실행을 해보면 url에 Access Token이 발급된 것을 확인할 수 있다.

*주의! ) *실습은 http로 진행되지만 실제 서비스를 운영할 때는 https로 사용하여야 한다.

반응형

댓글