학습 내용은 아래와 같습니다.
감사합니다.
📗 https://www.rfc-editor.org/rfc/rfc6749
oauth protocol이 존재하기 이전에는 표준화된 인증 방식이 없어서
아이디와 암호를 서비스에 제공하는 인증 방식을 사용하였습니다.
이렇다 보니 보안에 취약하며 구글, 야후, 아마존등 독자적인 규격의 인증 방식을
채택하였습니다.
이러한 문제점들을 해소하기 위해 나온 것이 Open Authrization입니다.
oauth는 사용자들이 아이디와 암호를 제공하지 않고 접근 권한을 얻을 수 있는 개방형 표준입니다.
Google, MicroSoft, Amazon, Facebook, kakao, Naver 같이
많은 회사에서 표준을 사용한 인증 서비스를 제공하며
벤더사에서 제공하는 인증 위임 기술을 사용하기 위해 RFC6749의 표준만
학습하면 되는 장점을 가집니다.
개발자는 oatuh 2.0 framework 표준을 학습하여 사용자에게 더 나은 경험을 제공하면 되겠습니다.
OAuth2.0을 따르는 서비스를 사용할 때 아래 설명된 역할을 기반으로
문서들이 작성이 되어있습니다.
사실 서비스들이 RFC6749의 단어를 정확히 따르지는 않지만 어떤 역할이 있는지
어떤 책임을 지는지에 대하여 학습해두면 개발에 적용할 때 도움이 됩니다.
Authorization Server 클라이언트에게 엑세스 토큰을 발급하는 주체, 리소스 소유자를 인증Resource server Resource Owner의 리소스를 호스팅 하는 서버, 액세스 토큰을 사용하여 보호된 리소스 요청에 응답Resource Owner 보호되는 리소스에 액세스 권한을 부여Client 대신하여 보호되는 리소스를 요청하는 주체
'Access Token'을 얻는 방식(인증 권한 부여 방식)
Authorization Code Grant가 가장 대중적이나
현재 서비스의 상황을 고려하여 적절한 방식의 채택이 필요합니다.
❓ Difference between Client and User-Agent
https://stackoverflow.com/questions/35637601/difference-between-client-and-user-agent
RFC6749의Obtaining Authorization항목에서는 아래같이 사용
User-Agent -> Browser, MobileApp
Cleint -> Resource Owner의 Resource에 접근하는 Application(흔히 백엔드 서버)
Authorization Code를 통하여 Client에서 엑세스 토큰을 얻음, 가장 대중적인 방식, 유일한 단점은 복잡성과 오버헤드
Authorization Code Grant에서 인증 코드 교환 과정을 제거User-Agent에 바로 엑세스 토큰을 제공하는 만큼 리프레시 토큰을 제공하지 않고 짧은 주기의 엑세스 토큰 제공
username, password로 Access Token을 얻는 방식, Resource Owner와 Client의 신뢰도가 높은 상태에서만 사용해야함Implicit Grant와 동일하게 권장하지 않음
