위와 같은 로그인 창을 본 적이 있다. 별도의 회원가입 없이 로그인을 제공하는 플랫폼의 아이디만 있으면 서비스를 이용할 수 있는 기능이다. 외부 서비스에서도 인증을 가능하게 하고 그 서비스의 API를 이용하게 해주는 것이 바로 OAuth라고 한다.
OAuth 란?
간단하게 인증(Authentication)과 권한(Authorization)을 획득하는 것이라고 할 수 있다.
인증: 시스템 접근을 확인하는 것 (로그인)
권한: 행위의 권리를 검증하는 것
OAuth의 배경은?
서드파트 앱(Third Party App: 제조사나 통신사에서 만든 기본 탑재 앱이 아닌 일반 앱스토어 등에서 다운받을 수 있는 앱)에 아이디와 비밀번호를 제공하고 싶지 않은 요구가 첫번째, 개인정보를 여러 곳에 입력하면서 피싱에 둔감해지고 무엇보다 어플리케이션이 안전하다는 보장이 없기 때문에 보안에 취약했다.
당시, 인증과 권한을 부여하는 요구를 만족 시킬 수 있는 인증방식이 없어서 Twitter의 주도로 OAuth 1.0이 탄생하였다.
그러나 OAuth 1.0의 경우 구현이 복잡하고 지원이 부족하였고 HMAC을 통해 암호화를 하는 번거로운 과정과 인증토큰이 만료되지 않는 등과 같은 문제가 있었다.
그래서 OAuth 2.0이 나오게 된다.
OAuth 2.0의 구성은?
Resource Owner : 사용자
Client : Resource Server에서 제공하는 자원을 사용하는 애플리케이션
Resource Server(API server) : 자원을 호스팅하는 서버
Authorization Server : 사용자의 동의를 받아서 권한을 부여하는 서버
인증과정과 인증 프로세스?
출처: https://developers.payco.com/guide/development/start
OAuth 인증의 종류 4가지?
1. Authorization Code Grant :
2. Implicit Grant
3. Resource Owner Password Credentials Grant
4. Client Credentials Grant
Token에 대해서는 나중에 더 자세히 알아보도록 하겠다.
'IT지식 > Web, Server' 카테고리의 다른 글
[Web] 유닛 테스트, 통합 테스트, 기능 테스트에 대해 공부해보자 (0) | 2022.12.21 |
---|---|
[Web] JSON Web Token에 대해 공부해보자 (0) | 2022.12.19 |
[Server] 토큰 기반 인증과 세션 기반 인증을 공부해보자 (2) | 2022.12.17 |
[Web] JSON에 대해 공부해보자. (0) | 2022.12.15 |
[Web] Frontend 기초 지식 (0) | 2022.12.03 |