-
[TIL] 2023.3.9.(목)코드스테이츠 43기 2023. 3. 9. 22:24
OAuth
소셜 로그인 인증방식은 OAuth 2.0을 바탕으로 구현된다.
전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과는 달리, OAuth는 인증을 중개해주는 메커니즘이다. 보안된 리소스에 엑세스 하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화 하는 프로토콜이다.
이미 사용자 정보를 가지고 있는 웹서비스(네이버,카카오 등)에서 사용자 인증을 대신 해주고, 접근 권한에 대한 토큰을 발급한 후 이를 이용해 서버내 인증이 가능하다.
유저입장에서 생각하면 OAuth를 활용해 중요한 서비스(구글 등)의 ID와 Password만 기억해 놓고 해당서비스를 통해 외부 서비스로 소셜 로그인을 할 수 있다. OAuth는 보안상의 이점도 있다. 검증되지 않은 App에서 OAuth를 사용해 로그인하면, 유저의 민감한 정보가 직접 App에 노출될 일이 없고 인증권한에 대한 허가를 미리 유저에게 구해야하기 때문에 더 안전하게 사용할 수 있다.
OAuth의 주체 Resource Owner
OAuh 인증을 통해 소셜 로그인을 하고싶어하는 사용자를 리소스오너라고 부른다.
리소스는 사용자의 이름,전화번호 등의 정보를 뜻한다. 이러한 정보의 주인이 사용자이기때문에 리소스오너라고 한다.
Resource Server&Auhorization Server
이미 사용중인 서비스(네이버 카카오 등)의 서버 중 사용자의 정보를 저장하고 있는 서버를 리소스 서버라고 한다.
이미 사용중인 서비스의 서버 중 인증을 담당하는 서버를 Authorization Server라고 한다.
Application
OAuth 인증방식의 종류와 흐름
Implicit Grant Type
소셜로그인에서 잘 사용하지 않는 타입이다. 기존 서비스에 로그인만 되어있다면 새로운 서비스에 바로 액세스 토큰을 내어주기때문에 보안성이 조금 떨어지기때문이다. 보통은 여기에 인증을 한단계 추가한 Authorization Code Grant Type을 주로 사용한다.
Authorization Code Grant Type
Authorization Code를 사용한 인증단계가 추가로 있기 때문에 비교적 더 안전한다. 원한다면 아래와 같이 토큰을 Application의 Client에 노출시키지 않고 서버에서만 관리하도록 만들 수 있기 때문에 선택지가 늘어난다.
Refresh Token Grant Type
Authorization Server로 리프레시 토큰을 보내주면, Authorization Server는 리프레시 토큰을 검증한 다음 액세스 토큰을 다시 발급해준다. Application은 다시 발급 받은 액세스 토큰을 사용해서 Resource Server에서 사용자의 정보를 받아온다.
'코드스테이츠 43기' 카테고리의 다른 글
React hooks 적용하기 (0) 2023.03.24 [2023.3.13] 섹션3 기술면접준비 (0) 2023.03.13 [2022.3.6.] 네트워크 심화 (0) 2023.03.06 [TIL] 2022..3.2. (백준 1629번,백준 11444번 풀어보기) (0) 2023.03.02 [2022.2.28.] (0) 2023.02.28