이번 강의에서는
OAuth 2.0 프로토콜 사양을
이해하려고 할 때 마주하는 술어나
자주 나오는 특수 용어들에 대해
이야기를 나누려고 합니다
첫 번째로 여러분이 많이 접할 술어나 특수 용어는
'리소스 소유자'입니다
OAuth 2.0 flow를 이해하려고 할 때마다 등장하는
리소스 소유자는 누구일가요?
그건 바로 여러분입니다. 엔드 유저는 OAuth 2.0 flow내에서
리소스 소유자의 역할을 하게 됩니다
엔드 유저가 리소스 소유자로 불리는 이유는
엔드 유저의 리소스들이 대부분 보안된 웹사이트들에 있기 때문입니다
예시로는 트위터가 있겠죠
트윗이나 사진들과 같은 엔드 유저의 리소스들이
트위터 애플리케이션 내에 보관되어있는 것입니다
비록 트위터 애플리케이션 내에
보관되어있지만
트위터가 그것들을 소유하지는 않습니다
소유하는 건 엔드 유저이겠죠
이것이 엔드 유저가 리소스 소유자로 불리는 이유입니다
트윗 분석 웹사이트의 상황을 가정한다면
자신의 트윗들에 대한 인사이트를 보기 위해
이 웹사이트를 사용하고 싶어하는 엔드 유저가
바로 리소스 소유자가 되는 것이죠
리소스 소유자에 대해 확실히 이해가 되셨길 바랍니다
다음으로 많이 접할 용어는 클라이언트입니다
주로, 클라이언트는 제 3의 웹 애플리케이션 또는
다른 웹 애플리케이션이며
트위터 애플리케이션이나
웹 애플리케이션과 교류하려고 합니다
리소스들이 보관되어있는 애플리케이션과 말이죠
만약 제가 리소스 소유자라면
제 리소스는 보안된 웹 애플리케이션에 보관되겠죠
예시로는 Twitter, Google Photos 또는 Google Drive가 있습니다
만약 어떤 다른 애플리케이션이
허가를 받고
제 리소스에 접근하려고 한다면
이 제 3의 웹 애플리케이션을
클라이언트라고 부르게 되는 것입니다
트윗 분석 웹사이트의 상황에서는
클라이언트가 그 웹사이트 자체입니다
왜냐하면 제 리소스에 접근하고자 하기 때문이죠
여기서 리소스란 엔드 유저인 저에게 부여하는
레포트의 자료와 분석대상이 될 트윗을 일컫습니다
클라이언트 다음으로는
승인 서버라는 말을 많이 들을 것입니다
이는 리소스 소유자에 대해 알고 있는 서버입니다
리소스 소유자에 대해 어떻게 아냐고요?
그의 인증서에 대해 묻는 것입니다
사용자명이 무엇인가요?
이메일은 무엇인가요? 비밀번호는요? 등과 같은 질문을 하는 것죠
만약 제가, 즉 리소스 소유자가 정확한 인증서를 입력한다면
인증 서비스가 저를 인식하겠죠
제가 리소스 소유자라는 것을 말입니다
다른 말로는, 리소스 소유자는 언제나
서버 내에 계정을 가지고 있어야 한다는 것입니다
인증 서버 내에도 있어야 하고요
인증과 허가 로직을 모두 작성하기 때문입니다
TweetAnalyzer의 경우
승인 로직을 가진 트위터 서버가
승인 서버에 접근합니다
확실히, 트위터는 대기업이기 때문에
모든 승인과 비즈니스 로직을 한 서버 내에
모두 다 가지고 있지는 않을 것입니다
인증 로직을 구분하고
보안 로직을 인증 서버라고 불리는
별도의 서버에 둘 것입니다
그리고 OAuth 2.0 내에 있는 다음 서버 유형은
리소스 서버입니다
추측하실 수 있듯이
트위터 애플리케이션 그 자체가 리소스 서버입니다
왜냐하면 제 트위터 웹 애플리케이션 내에서만
리소스들이 저장되고 보관되고 있기 때문이죠
TweetAnalyzer의 상황에서처럼
리소스 서버는 트위터 애플리케이션 그 자체고
모든 비즈니스 로직을 가지고 있을 뿐만이 아니라
모든 트윗을 보관하고 있기에
getTweets와 같은 REST API를 통해 제 트윗들을 노출시킵니다
이는 제 3의 웹 애플리케이션에 의해
실행될 수 있는데
여기서 제 3의 웹 애플리케이션은 TweetAnalyzer입니다
대부분의 소규모 단체들에서는
리소스 서버와 승인 서버가 모두
한 서버로 병합되어 있을 것입니다
하지만 Google이나 Twitter와 같은 대기업들을
살펴보면, 그들은 분명히 다른
승인 서버와 리소스 서버를
소유하고 있을 것입니다
그리고 마지막으로 '스코프'입니다
저희가 Spring Security 구조물에서 권한과
역할을 보았던 것처럼
OAuth 2.0 프로토콜 내에서
혹은 OAuth 기준 규격 내에서
스코프는 제 클라이언트가 원하는
세분화된 허가를 나타냅니다
TweetAnalyzer의 경우를 생각해보면
제 TweetAnalyzer 웹사이트는
트윗을 읽는 것을 희망할 것입니다
즉, 스코프는 '트윗 읽기'인 것이죠
따라서 스코프를 사용하여 인증 서버는
제한된 허가를 발급할 수 있습니다
사진 보기, 트윗 읽기, 혹은 프로필 보기 등 말이죠
오직 이러한 스코프들의 도움만으로
승인 서버와 액세스 토큰을 통해
제한된 허가들이
이루어질 것입니다
오늘 배운 부분들이 모두 이해가 가셨으면 좋겠습니다
OAuth 2.0의 술어
그리고 다양한 특수 용어들과
연관된 역할들이 어떤 것이 있는지 말입니다
하지만 이해가 안되시더라도 걱정하지 마세요
우리는 앞서 배운 술어들을
반복적으로 다시 살펴볼 예정입니다
앞으로 다음 강의들에서도 예시를 제시하고
오늘 배웠던 술어와 특수 용어들에 대한
데모를 제시해드리도록 하겠습니다
다음 강의에서는
OAuth 2.0 샘플 플로우를 TweetAnalyzer 웹 애플리케이션의
상황에서 이해해보도록 합시다
감사하고, 다음 강의에서 뵙겠습니다
수고하셨습니다