ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OAuth 2.0 마스터
    후기/Book Review 2019. 3. 3. 23:06
    728x90
    반응형



      자체로그인 + 소셜 로그인 구현을 위해 책들을 찾아보던 중 OAuth 2.0 쿡북을 구입했다. 근데 OAuth에 대한 설명은 별로 없고 예제 위주로만 되어 있어서 조금 보다가 대안으로 회사 도서관에서 찾은 책이 바로 이 책! 인터넷에서 OAuth에 대한 설명을 많이 찾아봐도 속시원히 이해하기가 어려웠는데, 이 책을 보면서 정리가 되는 기분이다.


    목차

    1. 왜 OAuth 2.0에 관심을 가져야 하는가?
    2. OAuth 2.0 개요
    3. 네 개의 단계
    4. 애플리케이션 등록
    5. 클라이언트 사이드 플로우로 액세스 토큰 얻기
    6. 서버 사이드 플로우로 액세스 토큰 얻기
    7. 액세스 토큰 이용하기
    8. 액세스 토큰 갱신하기
    9. 보안 고려 사항
    10. 모바일 애플리케이션
    11. 도구와 문제 해결
    12. OAuth 2.0 확장
    13. 부록A 리소스 소유자 비밀번호 자격증명 그랜트
    14. 부록B 클라이언트 자격증명 그랜트
    15. 부록C 래퍼런스

      로그인 같은 보안이 필요한 통신에서 사실상 표준이 된 OAuth 2.0 프로토콜에 대해 자세히 단계적으로 설명하고 실습까지 할 수 있는 책이다. 근데 OAuth 2.0은 정확히 무엇인가?

    OAuth 2.0은 서로 다른 두 집단이 정보와 리소스를 안전하고 신뢰할 수 있는 방법으로 공유할 수 있게 해주는 프로토콜이다. (p. 27) 자세한 내용은 공식 홈페이지를 참조 
      OAuth 2.0은 프로토콜이기 때문에 제공자에 따라 구현 방식은 다르지만 워크 플로우는 같은 스펙으로서 동일하다. 구글, 페이스북, 깃헙, 트위터, 네이버, 카카오 등 이미 다양한 기업들에서 OAuth 2.0을 사용하여 API를 제공하고 있다.

    보안에서 또 중요한 부분은 '인증(Authentication)'과 '인가(Authorization)'이다. 두 단어는 한국말도 비슷한데 영어도 비슷하다. 책에는 어떻게 설명했나 보자.

    인증 (authentication)
      : 누군가(또는 시스템)가 그들이 말하는 그 사람이 맞는지 실제로 확인하는 절차다. (p. 28)
    인가 (authorization)
      : 일단 인증이 됐다면 당신이 하고자 하는 어떤 일을 할 수 있는 권한이 있는지 판단하는 절차다. (p. 29)
      쉽게 말해 사원증으로 1층 입구는 들어갈 수 있지만(인증됨) 모든 곳을 다 들어가지는 못하는 것(인가된 곳과 안된 곳이 있음)과 비슷하다. 인증과 인가를 나누어야 더 체계적으로 보안성 있는 서비스를 제공할 수 있다. HTTP 에러도 401 Unauthorization (인증 안됨)과 403 Forbidden (권한 없음)으로 구분되어 있지 않는가.

      액세스 토큰과 리프레시 토큰을 얻는 플로우, 액세스 토큰을 가지고 리소스를 얻는 것 등 기타 자세한 내용은 책을 읽어보면 좋을 것 같다. 책에는 페이스북의 로그인 API를 예제로 사용하고 있는데 페이스북의 API 버전이 빠르게 변하기도 하고 콜백 URL을 https만 지원해서 조금 테스트하기 까다로웠다.

      회사에서 회원쪽 일을 하고 로그인 쪽도 같이 하고 있으며 OAuth 방식으로 서비스를 하고 있다. 내가 처음부터 설계하고 개발한 것이 아니라 아직 이해하지 못한 부분들이 많다. OAuth 2.0에 대해 공부하고 직접 구현해 보면서 실력을 쌓아 나가야겠다. 찬찬히 OAuth 2.0 스펙 문서도 읽어보면 좋겠다.


    OAuth 2.0 마스터 (OAuth 2.0 애플리케이션 개발을 위한 모든 것), 에이콘(찰스 비히스)

    반응형

    '후기 > Book Review' 카테고리의 다른 글

    Redis 핵심정리  (0) 2019.05.05
    소프트 스킬  (0) 2019.03.16
    기계는 어떻게 생각하고 학습하는가  (1) 2019.02.02
    Refactoring  (0) 2018.12.08
    이것이 자바다  (0) 2018.11.10

    댓글

Designed by Tistory.