학습 내용은 아래와 같습니다.
감사합니다.
📗 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
와 동일하게 권장하지 않음