OAuth
Open Authorization
인증을 위한 표준 프로토콜의 한 종류
- 인증을 중개해주는 방식
- 이미 사용자정보를 가지고 있는 소셜서비스(Google, Naver, Kakao 등)에서 인증을 대신 진행 -> 인증 후 인가를 위한 토큰 발급
OAuth 용어
Resource Owner
: 유저Client
: resource에 접근하는 applicationAuthorization Server
: authorization code와 access token을 발급하는 서버Resource Server
: 유저의 개인정보를 가지고 있는 애플리케이션서버, token을 서버로 주면 개인정보 응답해줌
OAuth 2.0 인증 절차 종류
- Authorization Code Grant
- Client가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용
- 리소스 접근을 위해, Authorization Server에서 받은 권한 코드로 리소스에 대한 액세스 토큰을 받는 방식
- 다른 인증 절차에 비해 보안성이 높아 주로 사용
- Implicit Grant
- Authorization Code Grant 와 다르게 권한 코드 교환 단계가 있음
- 액세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식
- Resource Owner Password Credentials Grant
- Client가 암호를 사용하여 액세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식
- Resource Owner에서 ID, Password를 전달 받아 Resource Server에 인증하는 방식으로 신뢰할 수 있는 Client 기능
- Client Credentials Grant
- Client가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식
OAuth 인증과정 (Authorization Code Grant)
ex) 유저 홍길동
이 mon
이라는 application에서 OAuth서비스로 Kakao
이용
홍길동(Resource Owner) -> mon
: Kakao OAuth 서비스 요청mon(Client) -> Kakao(Authorization Server)
: Authorization code 요청Kakao -> mon
: Authorization code 부여 (redirect)mon -> Kakao
: Authorization code 전달 + Access Token 요청Kakao -> mon
: Access Token 부여- access token(비교적 짧은 만료기간을 가짐) + refresh token(비교적 긴 만료기간을 가짐)을 함께 부여
- access token이 만료될 때 refresh token을 통해 access token을 재발급 받아 재 로그인 할 필요없게끔
mon -> Resource Server
: Access Token으로 홍길동의 Resource(개인정보) 접근요청Resource Server -> mon
: 토큰 유효성 검사 후 Resource 넘겨줌
JWT와 차이점
JWT는 Token의 한 형식이고, OAuth는 하나의 Framework
=> JWT가 과일이라면 OAuth는 과일을 담는 상자
JWT
권한을 행사할 수 있는 토큰의 종류
토큰 자체에 유저정보를 담고 있음
HTTP 헤더에 실어 전달함으로써 유저 세션을 유지할 필요가 없고 가볍게 데이터를 주고받을 수 있다는 장점
OAuth
토큰을 발급하고 인증하는 오픈 스탠다드 프로토콜
토큰을 통해 다시 Resource Server로 API요청을 보내야만 유저정보(resource)를 받아올 수 있음
OAuth를 통해 내가 만든 사이트를 사용하려는 유저가 자신의 카카오 계정과 비밀번호를 우리 사이트에 알려주지 않아도, 카카오에 있는 유저의 정보로 내가 만든 서비스에서 안전하게 사용할 수 있다.
Reference
https://about-tech.tistory.com/entry/Security-OAuth-20%EB%9E%80-%EA%B0%9C%EB%85%90-%EC%9D%B8%EC%A6%9D%EB%B0%A9%EC%8B%9D
https://velog.io/@kjhxxxx/OAuth-OAuth-2.0-%EC%9D%B4%EB%9E%80
https://hwannny.tistory.com/92
https://lewis-kku.tistory.com/34