OAuth(Open Standard for Authorization)란?
다른 서비스의 회원 정보를 안전하게 사용하기 위한 방법
요즘에는 흔히 웹 로그인을 하다보면은 Google , Facebook ,Twitter , 카카오 , 네이버 등의 외부 소셜 계정을 기반으로 간편히 회원가입 및 로그인을 할 수 있는 웹 어플리케이션을 쉽게 접할 수 있다. 클릭 한 번으로 간편하게 로그인을 할 수도 있고 더해서 연동되는 외부 웹 어플리케이션에서 Google , Facebook ,Twitter , 카카오 , 네이버 등이 제공하는 기능을 간편하게 사용 할 수 있다는 장점이 있다.
쉽게 말하면 , 쇼핑몰 사이트에서 네이버 아이디로 로그인 하면, 네이버로 사용자 접근권한 요청을 보내고, 사용자가 승인 할 경우, 사용자는 쇼핑몰을 이용할 수 있다.
많이 사용중인 OAuth 2.0 Framework
- OAuth 2.0
- RFC 6749 : The OAuth 2.0 Authorization Framework 에 정의
- 혼합 공격(Mix-Up Attack) 에 취약점 발견
- 많은 패치와 확장을 거쳐서 현재에 이르러 있다
다양한 클라이언트 환경에 적합한 인증(Authentication) 및 인가(Authorization) 의 부여 방법을 제공하고 그 결과로 클라이언트에게 접근 토큰 (Access Token) 을 발급하는 것에 대한 구조이다
다양한 클라이언트 환경
스마트폰이 나오면서 모바일 기기에서 인터넷이 접근이 쉽게 되고, 데스크톱 보다 모바일 장치에서 인터넷을 사용하는 사람들이 많아지면서 수 많은 데이터베이스의 암호가 탈취되는 사건들로 인해서 암호를 저장하는 것이 위험하다는 것이 거듭 증명되고 있다
적합한 인증 및 인가 의 부여 방법을 제공
OAuth 2.0 Framework 는 수 년에 걸친 패치와 사양들을 추가 했다 RFC6749는 Authorization Code, Implicit, Password, and Client Credentials 의 4가지의 권한 부여 방법을 진행할 수 있다
- Authorization Code
Web 혹은 Mobile App 에서 많이 사용한다
접근토큰(Access Token) 을 위한 권한 인증 코드(Authorization Code)를 받을 때 사용하는 인증 - Implicit (Legacy)
Browser based App 이나 Mobile App 에서 많이 사용한다
권한 인증 코드(Authorization Code)없이 바로 접근 토큰 (Access Token) 을 받는다 - Password (Legacy)
일반적인 아이디/비밀번호 입력 형태로 접근 토큰(Access Token)을 받는 방법 - Client Credentials
사용자가 아닌 클라이언트(프로그램)가 인가가 필요할 때 사용하는 방법. 결과로 클라이언트에게 접근 토큰을 발급한다. 모두가 잘 알고 있는 JSON(Javascript Object Notation) 방식의 JWT(JSON Web Tokens) 형식으로 접근 토큰을 발급을 받는다.
OAuth 2.0의 목적
OAuth 2.0는 하나의 플랫폼의 권한(의미 없는 무작위 문자열 토큰)으로 다양한 플랫폼에서 권한을 행사할 수 있게 하여 리소스 접근이 가능하게 하는 데 목적이 있다.
결과로 클라이언트에게 접근 토큰(Access Token)을 발급
모두가 잘 알고 있는 JSON(Javascript Object Notation) 방식의 JWT (JSON Web Tokens)를 접근 토큰(Access Token) 형식으로 발급 받는다
OAuth 2.0는 하나의 플랫폼의 권한(아무 의미없는 무작위 문자열 토큰)으로 다양한 플랫폼에서 권한을 행사할 수 있게 해줌으로써 리소스 접근이 가능하게 하는데 목적을 두고있다.
JWT와의 관계
JWT는 Cookie, Session을 대신하여 의미 있는 문자열 토큰으로써 권한을 행사할 수 있는 토큰의 한 형식이다. (로그인 세션이나 주고받는 값이 유효한지 검증할 때 주로 사용된다.)
더 좋은 글을 볼 수 있는 곳입니다!!
[출처]
'IT' 카테고리의 다른 글
| [데이터베이스 언어의 세 가지 주요 카테고리]DDL,DML,DCL 이란? (0) | 2023.01.19 |
|---|---|
| [웹 서버와 WAS의 차이점] 알아두면 유용한 필수 개념 간단 정리! (0) | 2022.12.19 |
| [HTTP의 특징과 쿠키 및 세션의 활용] 안정적 인증을 위한 필수 지식 (0) | 2022.12.12 |
| [HTTP와 HTTPS] 웹 통신의 기초와 보안 강화 방법 (0) | 2022.12.11 |
| [MyBatis 에서의 클래스 별칭 설정] @Alias 활용 방법과 XML 매핑 간소화 (0) | 2022.10.19 |