OAuth

2023. 11. 12. 12:48개인노트-개인공부

# OAuth

- OAuth 란 , Google 로그인 기능을 떠올리면 간단하다.
- 웹 서버에 Google 비밀번호를 제공하지 않고도, Google 계정의 일부 접근 권한을 부여할 수 있다.
- 실제로 많은 애플리케이션에서는 SNS(Google, Facbook 등) 간편 로그인 기능을 제공한다.

## 안전하지 않은 인증 방식 예시 (잘못된 경우)

- 먼저 예시로 아래는 안전하지 않은 SNS 로그인 방식이다.

- 아래 경우에서는 사용자가 서버에게 Google 아이디와 패스워드를 알려주어야 한다.

## Access Token 이용하기

- 사용자가 설정한 권한에 대해서만 Google 정보에 접근 할 수 있도록 한다.
- 바로 Access Token 을 이용하는 것이다.

## OAuth 2.0 구성 요소

구성요소 설명
Resource Owner 특정한 서비스를 사용하려고 하는 사용자다.
대부분 개인정보(Resource)의 소유자(개인)를 의미한다.
Client 특정한 개인 혹은 회사가 만든 서비스를 의미한다.
일반적인 웹/앱 서버를 의미하지만, Client라고 부른다.
그 이유는 Resource Server (Google, Facebook 등) 등의 입장에서는 Client이기 때문이다.
Resource Server 사용자의 개인정보를 가지고 있는 서버(Google, Facebook 등)를 의미한다.
Client는 Access Token을 Resource Server에 보내서 사용자의 개인정보를 얻는다.
Authorization Server 실질적으로 권한 부여 기능을 담당하는 서버다.
사용자는 자신의 SNS 계정 정보(ID, PW)를 넘겨 Authorization Code를 받는다.
Client는 사용자로부터 받은 Authorization Code를 넘겨 Access Token을 받는다.

 

## OAuth 2.0 동작 예시 (개발자 = Client 입장에서)

 

## OAuth 사용 사례 예시

1. 서비스 등록하기

  • Google에 본인의 웹 사이트(서비스)를 Client로 등록한다.
  • 이러한 과정에서 Client ID, Redirect URI 등의 정보를 설정한다.

2. 본인의 웹 사이트 사용자를 통해 Access Token 받기

  • 사용자를 Google 로그인 페이지로 이동시킨다.
  • Google이 로그인 된 사용자를 웹 사이트(Client)로 Redirect를 진행한다.

3. Client(웹 사이트)는 사용자가 Redirect 페이지로 전달한 Authorization Code를 활용

  • Authorization Code를 이용하여 사용자 정보에 접근 가능한 Access Token을 받는다.
  • Access Token을 Resource Server(Google 등)로 보내 인가된 사용자 정보를 얻는다.

'개인노트-개인공부' 카테고리의 다른 글

리팩토링(Refactoring)  (2) 2023.11.26
JWT(JSON Web Token)  (2) 2023.11.19
REST API  (0) 2023.11.05
함수형 프로그래밍  (1) 2023.10.30
개인 노트) w3schools.com - Node.js - 1  (0) 2023.05.30