구글 로그인 기능 구현중, 이제 OAuto2인증에 관련된 정보들을 보게 되었다. 보니까 없이도 로그인 기능 자체는 만들 수 있을 것 같긴한데 죄다 이걸 사용하니까, 이게 대체 무엇인가에 대한 궁금증이 들어서 한번 알아보려고 한다.
OAuth2란 무엇인가?
OAuth2는 "Open Authorization 2.0"의 약자로, 인터넷 사용자가 애플리케이션(예: 웹사이트, 모바일 앱)이 사용자 비밀번호를 직접 저장하거나 처리하지 않고 다른 애플리케이션이나 서비스의 리소스에 접근할 수 있도록 허용하는 인증 프로토콜이다. OAuth2는 사용자와 애플리케이션 간의 안전한 인증을 위해 설계되었다.
OAuth2의 주요 개념
리소스 소유자 (Resource Owner): 일반적으로 애플리케이션의 사용자로, 자신의 리소스에 접근할 수 있는 권한을 가지고 있다.
클라이언트 (Client): 사용자의 자원에 접근하려고 하는 애플리케이션이다. 클라이언트는 사용자의 허락을 받고, 특정 리소스에 접근하기 위해 인증 서버와 상호작용한다.
리소스 서버 (Resource Server): 사용자의 리소스(데이터)를 호스팅하고 있는 서버다. 예를 들어, Google Drive의 파일이나 Facebook의 사용자 프로필이 리소스가 될 수 있다.
인증 서버 (Authorization Server): 리소스 서버에 접근하기 위한 액세스 토큰을 발급하는 서버다. 사용자의 인증과 권한 부여 절차를 처리한다.
액세스 토큰 (Access Token): 클라이언트가 리소스 서버에서 리소스에 접근할 수 있도록 허용하는 토큰이다. 이 토큰은 제한된 시간 동안만 유효하며, 제한된 범위 내에서만 사용될 수 있다.
OAuth2의 사용 시나리오
OAuth2는 여러 상황에서 유용하게 사용한다. 예를 들어:
소셜 로그인: Facebook, Google, GitHub 등의 계정을 사용하여 웹사이트나 애플리케이션에 로그인할 수 있게 하는 기능이다. 사용자는 웹사이트에 새로운 계정을 만들 필요 없이, 기존 소셜 미디어 계정을 사용하여 간편하게 로그인할 수 있다.
서드파티 애플리케이션: 사용자가 특정 애플리케이션(예: 트위터 클라이언트)에 트위터 계정으로 트윗을 게시할 수 있도록 허용하는 경우다. 이 경우 애플리케이션은 사용자의 트위터 비밀번호를 알 필요 없이, OAuth2를 통해 필요한 권한을 받아 트윗을 게시할 수 있습니다.
OAuth2의 장점
보안성: OAuth2는 애플리케이션이 사용자의 비밀번호를 직접 저장하거나 처리하지 않도록 하여 보안을 강화한다. 사용자의 비밀번호가 애플리케이션에 노출되지 않으므로, 비밀번호 관리의 부담이 줄어든다.
편의성: 사용자 입장에서 소셜 미디어나 다른 서비스의 계정을 사용하여 간편하게 로그인할 수 있으므로, 새로운 계정을 만들 필요가 없다.
유연성: OAuth2는 다양한 클라이언트 및 서버와 함께 사용할 수 있도록 설계되어 있다. 이를 통해 다양한 인증 및 권한 부여 시나리오에 적용할 수 있다.
확장성: OAuth2는 다양한 사용 사례를 지원하며, 클라이언트 애플리케이션과 서버 사이의 상호작용을 간단하게 만들어 준다.
OAuth2의 동작 방식
사용자 승인 요청: 클라이언트 애플리케이션이 사용자의 리소스에 접근하기 위해 사용자의 승인(권한)을 요청한다.
사용자 승인: 사용자가 요청을 승인하면, 인증 서버는 클라이언트 애플리케이션에 "승인 코드"를 발급한다.
액세스 토큰 요청: 클라이언트 애플리케이션은 인증 서버에 승인 코드를 보내고, 액세스 토큰을 요청한다.
액세스 토큰 발급: 인증 서버는 승인 코드를 확인하고, 클라이언트 애플리케이션에 액세스 토큰을 발급한다.
리소스 서버에 요청: 클라이언트 애플리케이션은 액세스 토큰을 사용하여 리소스 서버에 요청을 보내고, 사용자의 리소스에 접근한다.
이 과정을 통해 OAuth2는 사용자와 클라이언트 애플리케이션 간의 안전한 인증 및 권한 부여를 처리한다.
'Coding History' 카테고리의 다른 글
chat 웹앱 수업. (0) | 2024.09.11 |
---|---|
VO, DTO, Entity의 차이점 (0) | 2024.09.09 |
국비 지원 IT(웹앱개발) 취업반 강의 58일차 (Spring) (4) | 2024.08.28 |
국비 지원 IT(웹앱개발) 취업반 강의 57일차 (Spring) (9) | 2024.08.28 |
국비 지원 IT(웹앱개발) 취업반 강의 56일차 (Spring) (2) | 2024.08.27 |