이번 시간에는
OAuth 2.0 샘플 플로우에 대한 데모를 보여드리겠습니다
저는 Slack.com이라는 사이트에 접속했습니다
모두들 이 사이트를 알고 계시리라 생각됩니다
이 웹사이트를 통해서 다른 사람들과 팀을 맺고
협력할 수 있습니다
관심사가 비슷하거나 오픈 소스 프로젝트 작업을
진행 중인 개발자들끼리 팀을 맺곤 합니다
그들은 작은 커뮤니티를 만들고
Slack 내에서 팀을 만들어서
상호작용을 합니다
이메일을 주고받는 대신
slack 커뮤니티를 통해
서로와 항상 교류할 수 있습니다
그것이 이 웹사이트의 숨겨진 이야기입니다
하지만 우리가 이 웹사이트에 온 이유는
OAuth 2.0 플로우의 작동법을 명확하게 파악하기 위해서입니다
여기서 볼 수 있듯이
저는 이 웹사이트에 처음 왔을 때
분명히 회원 가입을 해야만 했습니다
이메일 주소, 이름, 그리고 프로필 사진을
제공해야만 했죠
그리고 세부 사항을 제공하고 나서
회원 가입을 진행할 수 있었습니다
이것이 첫 번째 접근법입니다
두 번째 접근은 구글을 통해 회원 가입을 할 수 있다는 것입니다
많은 웹사이트들이 구글, Facebook 혹은 GitHub을 통해
로그인을 할 수 있도록 합니다
이유는 엔드 유저에게 모든 세부 사항들
예를 들어, 이메일 주소나 프로필 사진을
혹은 생일을 입력하라고 요구하는 것보다
이러한 세부 사항들을 구글, Facebook 혹은 GitHub과
같은 명성높은 기업들에게
제공받을 수 있기 때문입니다
이 기업들이 이미
엔드 유저의 이메일, 프로필 세부사항
성, 이름, 생년월일 등의 사항들을
인증했을 것이기 때문에
이런 세부 사항들은 이미 구글 리소스 서버 내에
그리고 구글 auth 서버 내에
분명히 존재할 것입니다
따라서 엔드 유저들에게 유연성을 부여하기 위해서
Slack 팀은
구글에게 연락을 취하고
본인들이 구글의 auth 서버와
연동되고자 한다는 의견을 전달할 것입니다
OAuth 2.0 프로토콜의 도움을 받은 리소스 서버도 말이죠
이를 통해 엔드 유저들의 기본 정보를
모두 부여받고, 같은 사항을 바탕으로
아주 빠르게
계정을 생성할 수 있는 것입니다
이것이 바로 구글과 함께 로그인할 수 있는 선택지를
마련한 slack의 본 의도입니다
여기를 보면, developers.google.com/identity/protocol/oauth2
라는 웹사이트가 있습니다
살펴보면, 이 부분은 OAuth 2.0 구조물을 통해
구글 로그인의 도움을 얻고 싶은
그 어떤 단체들도 다 참고할 수 있도록 마련한 설명서입니다
여러분은 기본 단계들을 볼 수 있습니다
먼저, 클라이언트 애플리케이션입니다
본인을 등록하면
클라이언트 ID를 부여받을 것입니다
그리고 구글과 본인의 애플리케이션 즉, slack에 모두
제공되는 클라이언트 기밀도 부여됩니다
그 다음에, 구글 승인 서버로부터
액세스 토큰을 받을 수 있습니다
그리고 동일한 액세스 토큰을 사용하면
리소스 서버에 요청을 보낼 수 있습니다
Facebook, Twitter, GitHub과 같은
명성 높은 단체들의 경우에는
모두 이러한 유연성을
지니고 있습니다
본인을 클라이언트로 등록하고
ID와 기밀을 받은 후
OAuth 2.0 실행을 시작할 수
있는 유연성을 뜻하는 것입니다
그리고 엔드 유저로서, 제가 희망하는 것은
구글의 도움을 얻어
이 사이트에 로그인을 하는 것입니다
따라서 여기서 저라고 볼 수 있는 엔드 유저는
리소스 소유자의 역할을 할 것입니다
이 Slack 웹사이트는 클라이언트 애플리케이션입니다
승인 서버와 리소스 서버는
구글이 될 것입니다
여러분이 역할과 기술에 대해 이해를 하셨으면 좋겠습니다
따라서, '구글로 로그인하기'를 클릭하면
보시다시피
다른 웹 페이지로 이동할 것입니다
이것은 구글 자체의 웹사이트이며
제 Gmail과 비밀번호를 표기할 수 있습니다
이건 걱정할 필요가 없고요
그리고 여기 client_id가 있습니다
Slack에서부터 넘어간 것이죠
따라서 구글이 어느 애플리케이션에게 액세스 토큰을
발급해야하고 추후에 인증서가 어디서 확인될 것인지
파악해야 하기 때문입니다
제 Gmail 입력을 시도해보겠습니다
여기서, 제 이메일을 입력했습니다
tutor@eazybytes.com이 제 이메일이고요
제가 왜 Gmail을 쓰지 않는지에 대해 걱정하실 필요가 없습니다
eazybytes.com가 있기 때문이죠
제 도메인이 구글에 등록되어있기 때문에
이것으로도 로그인을 할 수 있는 것입니다
하지만, 시도하고 싶다면
여러분의 Gmail 계정으로 시도해보세요
지금 다음으로 가기 버튼을 눌렀습니다
그리고 이것은 제 비밀번호 입력을 요구할 것입니다
비밀번호를 입력하겠습니다
또 다음으로 가기 버튼을 누르겠습니다
보시다시피 이것은 제 허가를 받고 있습니다
이러한 사용자명으로 Slack에 로그인하고 싶으면
확인을 누르라고 하는 것입니다
또한 명시되어있는 부분은 계정을 생성하기 위해서
구글이 이름, 이메일 주소, 프로필 사진등을
공유할 것이라는 점입니다
확인하기를 통해 허가를 했으면
Slack 웹사이트로 이동할 것입니다
여기 보시다시피
로그인이 된 사용자네요
그리고 이것이 이메일입니다
로그인된 사용자로서
언제든지 작업 공간을 생성할 수 있습니다
Slack에 말이에요
이것이 제가 보여드리고자 했던
워크플로우의 데모입니다
여러분은 언제든지 이와 동일한 과정을 Stack Overflow와 같은
다른 사이트에 시도해보셔도 좋습니다
Stack Overflow에는
회원 가입 버튼이 있으며
기본적인 정보를 모두 입력할 수도 있고
구글을 통해 로그인하는 선택지도 있습니다
GitHub을 통해 로그인하기, Facebook을 통해 로그인하기
GitHub을 통해 로그인하기를 누르면
GitHub 페이지로 이동하게 될 것입니다
같은 방식으로, Facebook으로 로그인하기도
선택할 수 있습니다
페이스북 페이지로 이동하게 되겠죠
이것이 OAuth 2.0의 엄청난 장점입니다
비록 본래의 개발 목적은
인증을 실행시키고
다른 애플리케이션에 대해
제한된 접근성을 띄게 하는 것이었지만
하지만 어떻게 하다보니 이런 웹사이트들이
OAuth 2.0 구조물 활용 방법을 잘 익히게 되었습니다
인증 과정에도 말이죠
즉, 같은 OAuth 2.0을 사용함으로써
그들은 허가와 인증을
모두 실행하려고 합니다
이러한 기본 정보를
Facebook, GitHub 혹은 구글에서 가져오면서
이 웹사이트들 내에 본인의 계정을 만드는 것입니다
물론, 이것은 현실과 똑같은 상황은 아닙니다
왜냐하면 현실의 의뢰인들을 위해 개발하는
은행 애플리케이션, 보험 회사와 같은 웹 애플리케이션들은
그들만의 승인 서버와
리소스 서버를 효과적으로
유지할 것이기 때문입니다
그들은 Facebook을 통해 로그인을 못하도록 합니다
다만, 저는 OAuth 2.0 플로우의 기본적인 느낌을
여러분께 알려드리고 싶었습니다
그리고 분명한 것은 OAuth 2.0 플로우와
은행 애플리케이션과 같이 기업 내에서
동일하게 실행되는 방법에 대해
또 한 번 설명할 것입니다
여러분들이 이제 OAuth 2.0 구조물에 대해
아주 명확하게 이해하고 계실 것이라 믿습니다
그리고 다음 강의에서부터는
OAuth 2.0 구조물 내에서 활용 가능한
grant flow에 대해 이야기를 나누어 봅시다
감사하고, 다음 강의에서 뵙겠습니다. 수고하셨습니다