OAuth
인증을 중개해주는 매커니즘. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다. 즉, 사용자가 이미 사용하고 있는 서비스로 다른 서비스에 인증을 할 수 있도록 중개해주는것.
이미 사용자 정보를 가지고 있는 웹서비스가 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후 이를 이용해 서버에서 인증이 가능해지는것이다. 예시로는 소셜 로그인을 들 수 있다.(카카오로 로그인, 네이버로 로그인...)
OAuth 작동 매커니즘
OAuth의 주체
Resource Owner
사용자. Resource는 사용자의 이름, 전화번호 등의 정보를 뜻한다.
Resource Server & Authorization Server
Resource Server : 이미 사용중인 서비스의 서버 중 사용자의 정보를 저장하고 있는 서버
Authorization Server : 이미 사용중인 서비스의 서버 중 인증을 담당하는 서버
Application
사용자가 소셜 로그인을 활용해 이용하고자 하는 새로운 서비스. 경우에 따라 Client와 Server로 세분화해서 지칭할 수도 있음.
OAuth 인증방식의 종류
Grant Type : Authorization Server에서 액세스 토큰을 받아오는 방법
1. Implicit Grant Type
- 사용자가 Application에 접속
- Application에서 Authorization Server로 인증 요청 보냄
- Authorizaiton Server는 유효한 인증 요청인지 확인한 후 액세스 토큰을 발급
- Authorization Server에서 Application으로 액세스 토큰을 전달
- Application은 발급받은 액세스 토큰을 담아 Resource Server로 사용자의 정보 요청
- Resource Server는 Application에게서 전달 받은 액세스 토큰이 유효한 토큰인지 확인
- 유효한 토큰이라면, Application이 요청한 사용자의 정보를 전달
기존 서비스에 로그인만 되어있다면 새로운 서비스에 바로 액세스 토큰을 내어주기 때문에 보안성이 조금 떨어짐.
2. Authorization Code Grant Type
- 사용자가 Application에 접속
- Application에서 Authorization Server로 인증 요청 보냄
- Authorizaiton Server는 유효한 인증 요청인지 확인한 후 Authorization Code를 발급
- Authorization Server에서 Application으로 Authorization Code를 전달
- Application이 Authorization Code로 발급받은 Authorization Code를 전달
- Authorizaiton Server는 유효한 Authorization Code인지 확인한 후 액세스 토큰 발급
- Authorization Server에서 Application으로 액세스 토큰 전달
- Application은 발급받은 액세스 토큰을 담아 Resource Server로 사용자의 정보를 요청
- Resource Server는 Application에게서 전달 받은 액세스 토큰이 유효한 토큰인지 확인
- 유효한 토큰이라면, Application이 요청한 사용자의 정보를 전달
Implicit Grant Type과 비교했을때 Authorization Code를 사용한 인증 단계가 추가로 있어 비교적 더 안전함.
또 토큰을 Application의 Client에 노출시키지 않고 서버에서만 관리하도록 만들 수도 있다.
액세스 토큰 만료시, 매번 이 과정을 거쳐 액세스 토큰을 재발급하기에는 사용자 편의성이 좋지 않다.
=> 액세스 토큰 발급시 리프레시 토큰을 같이 발급해주는 Refresh Token Grant Type
3. Refresh Token Grant Type
- 사용자가 Application에 접속
- Application에서 Authorization Server로 Refresh Token 전달
- Authorization Server는 Refresh Token을 확인
- Authorization Server가 Application으로 Access Token 전달
- Application은 Resource Server로 Access Token 전달
- Resource Server는 유효한 Access Token인지 확인
- 유효한 토큰이라면 Application으로 사용자 정보 전달
OAuth 인증 방식의 장점
쉽고 안전하게 새로운 서비스를 이용할 수 있음
사용자는 OAtuh를 이용해 특정 사이트에 개인정보를 일일이 입력하지 않아도 손쉽게 가입이 가능함
정보를 특정 서비스에 직접 노출하는것이 아니기때문에 직접 가입하는 것 보다 안전함
Application의 입장에서도 회원의 정보를 직접 가지고 있지 않음으로 회원정보 유출의 위험성에서 부담을 덜 수 있음
정보의 권한 영역을 설정
OAuth 인증을 허가해도 새로운 서비스는 사용자가 원하는 정보에만 접근할 수 있다. => 안전함
OAuth 설정 페이지에서는 Application에서 필요한 정보를 선택가능. 사용자는 이 중 원하는 정보만 선택적으로 제공할 수 있다.
'study > TIL' 카테고리의 다른 글
23.03.14 - 자료구조, Stack, Queue (0) | 2023.03.14 |
---|---|
23.03.13 - 기술면접 (0) | 2023.03.13 |
23.03.08 - Token (0) | 2023.03.08 |
23.03.07 - Cookie, Session (0) | 2023.03.07 |
23.03.06 - TCP/IP, 네트워크 계층 모델, HTTP, HTTPS (0) | 2023.03.06 |