OAuth2!
소셜 로그인을 OAuth2라 불렀구나!
난 최근에 거의 대부분에 사이트에 소셜 로그인이 있다면 그것만 사용한다!
나중에 프로젝트 할때도 무조건 도입해야할 기능중 하나라고 생각이 든다!
열심히 공부 해봐야지~~
OAuth2.0 란?
OAuth 2.0은 인증에 대한 산업 표준 프로토콜.
OAuth 2.0은 사용자가 인터넷 애플리케이션을 통해 다른 서비스 제공자의 리소스에 대한 접근 권한을 부여하는데 사용된다.
OAuth 2.0은 네 가지 주요 역할을 정의한다: 리소스 소유자, 클라이언트, 리소스 서버, 인증 서버. 리소스 소유자는 리소스에 대한 접근 권한을 가진 엔티티, 일반적으로 사용자를 가리킨다. 클라이언트는 리소스 소유자의 승인을 받아 리소스에 접근하려는 애플리케이션을 나타낸다. 리소스 서버는 클라이언트에게 제공될 리소스를 호스팅하는 서버를 의미한다. 인증 서버는 클라이언트가 리소스에 접근할 때 필요한 권한을 부여한다.
이 프로토콜을 사용함으로써 사용자는 인터넷 애플리케이션을 통해 계정 정보를 공유하지 않고도 해당 계정에 저장된 정보에 접근할 수 있는 권한을 부여할 수 있다. 예를 들어, 사용자는 소셜 미디어 사이트에서 콘텐츠를 게시하도록 블로그 사이트에 권한을 부여할 수 있다.
Authorization Grant란?
Authorization Grant는 OAuth 2.0에서 인증 절차를 시작하는데 사용되는 자격 증명을 말한다.
이것은 클라이언트가 사용자 대신에 특정 리소스에 대한 접근 권한을 받는 방법을 정의한다. 즉, 클라이언트가 사용자로부터 리소스에 대한 접근 권한을 얻기 위해 필요한 정보를 의미한다.
Authorization Grant는 OAuth 2.0 인증 절차의 첫 번째 단계로, 사용자는 자신의 리소스에 대한 접근을 클라이언트에게 허용함으로써 이를 부여한다. 그런 다음 클라이언트는 이 Grant를 사용하여 인증 서버에게 접근 토큰을 요청하고, 이 토큰을 사용하여 리소스 서버에 접근한다.
Authorization Grant 유형
Authorization Code Grant: 이는 전통적인 방식이며, 웹 애플리케이션에서 가장 널리 사용된다. 사용자는 클라이언트 애플리케이션을 통해 리소스에 접근하는 요청을 한다. 그러면 클라이언트 애플리케이션은 사용자를 인증 서버로 리디렉션한다. 사용자는 인증 정보를 입력하고 클라이언트 애플리케이션에 대한 접근 권한을 승인한다. 그런 다음 인증 서버는 사용자를 클라이언트 애플리케이션으로 다시 리디렉션하고, 이 때 'authorization code'를 함께 전달한다. 클라이언트 애플리케이션은 이 코드를 사용하여 인증 서버로부터 액세스 토큰을 얻는다.
Implicit Grant: 이 방식은 주로 자바스크립트와 같은 클라이언트 사이드 스크립트를 실행하는 웹 애플리케이션에서 사용된다. Authorization Code Grant와 유사하게 작동하지만, 'authorization code' 과정을 건너뛰고 인증 서버가 바로 액세스 토큰을 제공한다. 이 방식은 간단하나 보안 상 문제가 될 수 있다.
Resource Owner Password Credentials Grant: 이 방식은 클라이언트 애플리케이션이 사용자의 아이디와 비밀번호를 직접 요구하고, 이를 이용해 인증 서버에 접근하여 액세스 토큰을 얻는 방식. 이 방식은 신뢰할 수 있는 애플리케이션에서만 사용될 것을 권장한다.
Client Credentials Grant: 이 방식은 클라이언트 애플리케이션이 자체 자격 증명을 이용하여 인증 서버에 접근하는 방식이다. 이 방식은 클라이언트 애플리케이션이 자신을 대표하여 리소스에 접근할 때 사용된다.