OAuth2
◎ OAuth2
-> 일반적으로 어떤 애플리케이션에서 사용자에 대한 인증 처리는 해당 애플리케이션이 자체적으로 회원의 크리덴셜을 관리를 하여 인증처리를 직접 처리를 한다.
-> 이 상황에서 애플리케이션에서 사용자에게 캘린더 서비스를 제공하기 위해 구글 캘린더 API를 이용한다면 애플리케이션에 회원 가입을 통해 사용자의 크리덴셜을 관리함과 동시에 구글 캘린더 API를 사용하기 위해 구글에서 제공하는 사용자의 크리덴셜까지 애플리키케이션과 공유해야 한다.
-> 이 방식은 사용자의 중요 정보인 크리덴셜을 두 개나 관리해야한다. 구글에서 패스워드 같은 정보를 변경하면 애플리케이션에서도 추가로 업데이트를 해야 하며 애플리케이션이 구글에서 사용하는 크리덴셜까지 직접 관리를 하는 것은 보안 침해 사고가 발생하면 굉장히 큰 문제가 된다.
-> 이런 문제는 OAuth2 인증 프로토콜을 사용하여 해결한다.
-> OAuth2는 애플리케이션에서 직접 사용자의 인증을 처리하지 않고, 사용자 정볼르 보유하고 있는 신뢰할 만한 서드파티 애플리케이션(구글, 카카오 등)에서 사용자의 인증을 대신 처리하고 리소스에 대한 자격 증명용 토큰을 발급하여 클라이언트가 해당 토큰을 이용해 서드 파티 애플리케이션의 서비스를 사용하게 해주는 방식이다.
◎ OAuth2를 사용하는 애플리케이션 유형
1. 서트 파티 애플리케이션에서 제공하는 API의 직접적인 사용
- 구글과 같은 신뢰할 만한 서드 파티 애플리케이션에서 제공하는 API를 직접 사용하는 애플리케이션을 구현할 때 OAuth2를 사용한다.
- 사용자가 OAuth2 인증 프로토콜을 사용해 서드 파티 애플리케이션에 대한 인증을 성공하면 서드 파티 애플리케이션에서 제공하는 API를 활용하여 커스텀 서비스를 제공한다.
2. 추가적인 인증 서비스 제공 용도
- 서드 파티 애플리케이션의 서비스와 추가적인 인증 서비스를 제공하기 위한 용도로 사용한다.
- 애플리케이션에서 제공하는 아이디/패스워드 로그인 인증 외에 OAuth2를 이용한 로그인 인증 방법을 추가적으로 제공하는 방식이다.