관리자 글쓰기
2023-01-03 Today I learned Oauth
2023. 1. 3. 18:38 - DoosanBaek

Oauth

자신이 소유한 리소스에 소프트웨어 애플리케이션이 접근할 수 있도록 허용해 줌으로써 접근 권한을 위임해주는 개방 형 표준 프로토콜 

- 사용자가 한 번의 인가 절차로 다른 웹 서비스를 이용할 때, 로그인 자격 증명 ( 예를 들면 단일 ID 와 비밀번호)과 같은 개인정보를 전송하지 않고도 자신의 접근 또는 기타 권한을 부여 할 수 있도록 하는 것에 대한 공개 표준 프로토콜이다.

- 현재 많이 사용중인 OAuth2.0 Framework 다양한 클라이언트 환경에 적합한 인증(Authentication) 및 인가(Authorization)의 부여 방법을 제공하고 그 결과로 클라이언트에게 접근 토큰(Access Token)을 발급하는 것에 대한 구조이다.

 

4가지의 권한 부여 방법을 제공한다.

1. Authorization Code : Web , Mobile App에서 많이 사용한다. Access Token 을 위한 권한 인증 코드 (Authorization Code)를 받을 때 사용하는 인증

2. Implicit (Legacy) : Browser based App이나 Mobile App에서 많이 사용한다. 권한 인증 코드 없이 바로 Access Token을 받는다.

3. Password (Legacy) : 일반적인 아이디 / 비밀번호 입력 형태로 Access Token을 발급받는 방법 자체서비스에서만 사용되며 외부 개발자가 사용할 수 없도록 하는게 일반적이다.

4. Client Credencials : 사용자 ( User )가 아닌 Client ( 프로그램 )을 인가할 때 사용하는 방법 결과로 클라이언트에게 접근 토큰 (Access Token)을 발급한다. - Jwt token을 리턴받는다.

 

JWT와 Oauth의 차이

 Jwt는 토큰의 한 종류이고 Oauth는 토큰을 요청할 때 사용할 수 있어야하는 요청 및 응답의 순서와 형식이 있고 각기 다른 시나리오에서 어떤 방 식으로 권한 부여 유형을 사용할지 정하는 프레임워크 이다.

 Oauth Framework를 통해 발급된 Oauth Bearer Token은 사용자 정보와 같은 중요한 정보가 들어있는 토큰이 아니 며 랜덤한 문자열이 들어가있다. 반대로 Jwt 토큰은 명확한 정보를 가지고있는 토큰이다.