소셜 로그인을 하는데, 이번 프로젝트에서는 OIDC 방식으로 구현을 하기로 했다.
OpenID Connect를 의미한다. OAuth 2.0을 기반으로 한 인증 프로토콜로, 사용자의 신원 (identity)을 확인하는데 사용된다.
그렇다면 OAuth 2.0와 어떤 점이 다른걸까?
OAuth 2.0는 인가(authorization)를 다루고, OIDC는 인증(authentication)을 다룬다.
즉, OAuth 2.0는 "여기서 이 데이터를 사용할 수 있게 해줄까?"라면, OIDC는 "사용자가 실제로 누구이고, 어떤 정보를 가지고 있는지 알려줄게!"다.
OIDC는 ID Token을 가진다. 사용자의 정보를 담고 있는 JWT 형식의 토큰으로, 사용자의 id, 이메일, 이름 등 프로필 정보를 포함한다.
이 ID Token으로 사용자의 신원을 확인할 수 있는 것이다.

이게 기본 흐름이지만, 여러가지 방식이 있다. 우리 서비스에서는
Authorization Code Flow를 사용한다.
클라이언트가 Authorization Code를 받아서, 서버에서 AccessToken과 ID Token과 교환하는 방식이다.
이 방식은 토큰이 직접 브라우저에 노출되지 않아 보안이 강하다.