[Web]OAuth

meek·2023년 6월 11일
0

TIL

목록 보기
9/24
post-thumbnail

패스트캠퍼스의 'Javascript 코딩테스트 131개 예제 & CS지식으로 끝내기' 강의를 듣고 정리한 내용입니다.

내가 만든 서비스를 사용하는 유저의 입장으로서 다양한 편의성이 높은 기능을 제공하기 위해서 효과적으로 사용할 수 있다.

OAuth?

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

안전하지 않은 인증 방식 예시

사용자가 서버에게 Google 아이디와 패스워드를 알려주어야 하는 경우
1. Google 로그인 요청(데이터 : Google 계정 정보)
2. 사용자의 Google 계정 로그인
3. 사용자 정보 얻기
4. 로그인 성공 응답

👉🏻 Google 계정 정보가 그대로 노출될 수 있다는 위험이 있다. 즉, 안전하지 않은 방법!

Access Token 이용

  • 사용자가 설정한 권한에 대해서만 Google 정보에 접근할 수 있도록 하려면 👉🏻 Access Token을 이용!

Access Token 사용 예시

  1. 사용자에 대한 Access Token 주기
  2. 사용자 정보 얻기

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 입장에서)


참고자료

https://hudi.blog/oauth-2.0/

profile
hello, world!

0개의 댓글