Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

배워보자~

[OAuth2] 기본 개념 잡기 본문

Etc

[OAuth2] 기본 개념 잡기

벽면 수도 2019. 10. 25. 17:37

 

 Oauth2 란? (링크의 첫 문장만 읽어보자)

즉, 외부 서비스 사용에 대한 인증과 권한 처리

 

grant-type 개념

- authorization code : front - front 서버가 있으면 front 서버에서 처리해준다. (backend, api 서버가 아닌... 아~ 설명이 힘들다.)

- implicit : 일반적으로 web app에 적용 (예로~ 브라우저에서 타 서비스를 직접 호출할 시)

- resource owner password credentials : 그냥 일반적인 웹으로 생각하자~

- client credentials : 신뢰할 수 있는 클라이언트, 인증된 클라이언트

 

Oauth 내용을 읽을 때 주의해야할 용어들.

클라이언트란? 일반적으로 브라우저라고 설명하는데. 단순 브라우저라고만 생각하면 글이 정말 어려워진다. 그렇게 생각하지 말자. 서비스를 이용하는 쪽을 클라이언트라 한다. 

즉, 다음에서 네이버 검색을 이용한다고 하면 다음은 클라이언트가 된다.

 

Client authentication vs. user authentication

oauth 관한 글을 읽다보면 권한 부여가 된다고 해서 이용자 레벨(보통 user/admin/super 등등) 별 권한으로 생각하기 쉽다. 하지만 아닌 것 같다. 해당 링크 글을 읽보시길. 

 

Resource owner, Resource server

리소스 주인이 곳 리소스 서버 아닌가? 처음에는 정말 헷갈렸다.

쉽게 예로~ 페이스북 이용자가 페이스북 서버에 접속을 하면 정말 아무 문제 없다. 굳이 oauth를 사용할 필요도 없다. 

페이스북 이용자가 카카오톡을 이용해서 페이스북 서버의 본인 사진을 가져오는 상황을 생각하자.

페이스북 이용자가 사진의 주인, 카카오톡이 클라언트, 페이스북이 리소스 서버가 된다.

즉, 리소스 서버는 클라이언트에 대한 인증을 하는 것이지 절대(?) 페이스북 이용자에 대한 인증(?)을 하는 것이 아니다.

이런 생각을 갖고 grant_type들의 시퀀스 다이어 그램을 보면 쉽게 이해(?)가 될 것이다.

 

추가적으로 타 시스템과 연동이 필요하지 않은 (네이버에서 네이버 로그인하는 경우같은) 곳에서 oauth를 적용한다고 생각하면 정말 헷갈린다. 이해도 가지 않고. (일단 전 그랬습니다. ㅎㅎ) 특히 싱글사이온을 구축하기 위해서 보고 계셨다면 더욱더.

로컬 시스템을 만들 때도 생각을 조금 바꿔서 

리소스 오너 = 이용자, 브라우저(SPA) = 클라이언트, 웹서버 = 리소스 서버 이렇게 생각해보자.