1. OAuth는 뭘까 ?
"Open Authorization"의 약자이다.
"Open Authorization"은 사용자의 데이터에 대한 안전한 접근 및 권한 부여를 위한 표준 인증 프로토콜로 사용된다.
예시를 보면 소셜 로그인 또는 sns 로그인이라고 이런 화면 많이 봤을 것이다.
이런 로그인 방식을 OAuth 인증, OAuth 기반 로그인 이라고 한다.

2.그렇다면 OAuth 기반 로그인의 장점은 무엇일까 ?
사용자 경험 개선
사용자가 다른 애플리케이션 또는 서비스로 쉽게 로그인할 수 있도록 도와준다.
사용자가 새로운 계정을 만들거나 로그인 자격 증명을 다시 입력하는 번거로움을 줄여준다.
보안 강화
사용자가 원하는 특정 권한만 부여할 수 있도록 하여, 사용자의 데이터에 대한 접근을 제어할 수 있다.
사용자의 로그인 자격 증명이 직접 공유되지 않고, 대신에 액세스 토큰이 사용되므로 보안성이 향상된다.
사용자 데이터의 안전한 공유
OAuth를 사용하면 사용자의 비밀 정보가 직접 제3자와 공유되지 않고, 대신 안전한 방식으로 권한 부여가 이루어진다.
간편한 접근 제어
사용자는 어떤 애플리케이션이 자신의 데이터에 액세스할 수 있는지 쉽게 관리할 수 있다.
사용자는 권한을 부여하거나 취소할 수 있으며, 필요에 따라 언제든지 제어할 수 있다.
다중 플랫폼 및 서비스 호환성
OAuth 기반 로그인은 여러 서비스 및 플랫폼 간에 사용자 인증 및 데이터 공유를 쉽게 가능하게 한다.
이는 다양한 애플리케이션과 서비스 간의 통합을 간편하게 도와준다.
3.OAuth 2.0 ?
OAuth 2.0은 OAuth 1.0의 개선된 버전으로,
이전 버전의 몇 가지 약점과 보안 문제를 해결하고 간단하게 만든 버전이다.
여기에는 몇 가지 주요한 차이점이 있다.
간편한 구현
OAuth 2.0는 비교적 간단한 절차를 제공하며, 개발자들이 구현하고 사용하기 쉽다.
보안 향상
2.0 버전은 HTTPS 연결을 요구하여 보안을 강화한다.
액세스 토큰의 유효성 검사
OAuth 2.0는 액세스 토큰의 유효성을 검증하는 추가적인 보안 계층을 도입하여 보다 안전한 토큰 교환을 지원한다.
토큰 갱신
OAuth 2.0은 토큰 갱신을 표준화하여 더 짧은 유효 기간을 가진 토큰을 사용한다.
다양한 인증 방법
OAuth 2.0은 다양한 인증 방법(비밀 번호 인증, 클라이언트 자격 증명, 리소스 소유자 비밀 번호 자격 증명, 토큰 교환 등)을 지원하여 유연한 사용이 가능하다.
사용자의 비밀 정보 공유 최소화
OAuth 2.0는 사용자의 비밀 정보를 직접 제3자와 공유하지 않고, 안전한 방식으로 사용자의 데이터에 접근 가능하게 한다.
클라이언트가 리소스 서버에 직접 접근하지 않음
클라이언트가 사용자 정보를 안전하게 저장할 필요가 없으며, 대신 토큰을 사용하여 접근한다.
이러한 장점으로 인해 OAuth 2.0는 보안을 강화하면서도 사용자와 클라이언트 간의 접근 권한을 쉽게 제어할 수 있는 효율적인 방법으로 폭넓게 사용되고 있다.
4. OAuth 2.0의 핵심 요소?
구분 | 설명 |
클라이언트(Client) | 사용자 데이터에 접근하기 위해 권한을 요청하는 응용 프로그램 또는 서비스이다. 예를 들면, 소셜 미디어 어플리케이션이나 웹 어플리케이션 등이 클라이언트가 될 수 있다. 쉽게 말하자면, 개인 혹은 회사가 만든 서비스를 의미한다. |
리소스 소유자(Resource Owner) | 자신의 데이터 또는 자원을 소유한 사용자이다. 즉, 특정한 서비스를 이용하려는 사용자. 이 사용자가 클라이언트에게 자원에 대한 접근 권한을 부여할 수 있다. |
인가 서버(Authorization Server) | 사용자의 신원을 확인하고 권한을 부여하는 서버이다. 이 서버는 사용자에게서 권한 부여를 받은 후에 클라이언트에게 엑세스 토큰을 제공한다. |
리소스 서버(Resource Server) | 보호된 자원 또는 데이터가 저장되어 있는 서버이다. ex) Google, Facebook 등. 이 서버는 클라이언트가 요청한 자원에 대한 엑세스를 관리한다. |
엑세스 토큰(Access Token) | 클라리언트가 리소스 서버에 접근하기 위한 권한을 부여하는 토큰이다. 이 토큰은 리소스 서버에 제공되어 특정 자원에 대한 접근 권한을 인증한다. |
범위(Scope) | 클라이언트가 요청하는 자원에 대한 엑세스 권한 범위를 정의한다. 예를 들면, "프로필 읽기", "이메일 보내기" 등의 범위가 될 수 있다. |
리다이렉션 URI(Redirect URI) | 사용자 인증 및 권한 부여 후, 인가 서버가 클라이언트에게 액세스 토큰을 제공하기 위한 URI이다. |
다음은 OAuth 2.0 동작 예시이다. (개발자 = Client 입장에서)
필자의 그림판 실력은 감안해주시길..

'컴퓨터 과학' 카테고리의 다른 글
CS-JWT(JSON Web Token) (2) | 2023.11.13 |
---|---|
CS-JSON(JavaScript Object Notation) (0) | 2023.11.13 |
c언어-메모리 (0) | 2023.01.21 |
c언어-알고리즘 (0) | 2023.01.21 |
c언어-배열 (0) | 2023.01.21 |