본문 바로가기
PulseBoard

카카오 OpenID Connect를 써도 Firebase Custom Token이 필요한 이유

by 밤새는 탐험가89 2025. 12. 24.
728x90
SMALL

결론부터 (명확하게)

❌ 카카오에서 OpenID Connect(OIDC)를 활성화해도
카카오 ID 토큰을 그대로 Firebase Custom Token으로 사용할 수는 없다.

 

👉 여전히 서버 + Firebase Admin SDK가 필요하다.

 

왜 이런 혼동이 생기냐면

카카오 문서를 보면 이런 말이 나와 👇

“ID 토큰은 JWT 형식이며
로그인 세션 대신 사용할 수 있다”

 

이 문장을 보면 자연스럽게 이런 생각이 들어:

“어? JWT면 Firebase Custom Token이랑 같은 거 아냐?”

 

👉 여기서 오해가 생김

 

핵심 개념 정리 (이거만 기억하면 됨)

JWT는 “형식”일 뿐이다

👉 JWT라고 해서 Firebase가 다 받아주는 게 아님

구분 의미
JWT 토큰 형식 (포맷)
Firebase Custom Token Firebase가 신뢰하는 JWT
Kakao ID Token Kakao가 발급한 JWT

 

Firebase가 로그인에 허용하는 토큰은 딱 이것뿐

  • Firebase Auth가 신뢰하는 토큰
    1. Firebase가 직접 발급한 토큰
    2. Google / Apple 같은 내장 Provider의 Credential
    3. Firebase Admin SDK가 발급한 Custom Token

Kakao / Naver / 어떤 OIDC Provider의 ID Token도 직접 사용 불가

 

그럼 OpenID Connect는 왜 있냐?

OpenID Connect의 역할 (중요)

OIDC를 켜면 카카오는:

  • accessToken ❌ 단순 API 토큰
  • ID Token(JWT) ✅ “인증 결과 증명서”

를 함께 준다.

이게 좋은 점은?

  • 서버에서 사용자 검증이 훨씬 명확
  • 표준 claims (iss, aud, sub, exp) 제공
  • 보안 강화
  • 카카오 userId(sub)를 신뢰할 수 있게 획득

👉 서버에서 Custom Token 만들기 전에 검증하기에 매우 좋음

iOS
→ 카카오 로그인 (OIDC 활성화)
→ accessToken + ID Token(JWT) 획득
→ 서버로 ID Token 전달
→ 서버에서 ID Token 검증 (iss, aud, exp, signature)
→ kakao userId(sub) 추출
→ Firebase Admin SDK
→ Firebase Custom Token 발급
→ Firebase Auth 로그인

 

📌 OIDC는 “Firebase를 대체”하는 게 아니라
“서버에서 검증을 더 안전하게” 해주는 역할

 

중요한 문장 하나

OIDC = 인증 결과를 표준 JWT로 주는 것
Firebase Custom Token = Firebase가 로그인에 쓰는 전용 토큰

 

👉 용도가 다르다

 

그럼 OIDC를 켜야 할까?

결론: 켜는 게 맞다 (추천)

👉 Firebase 직접 로그인은 둘 다 불가
👉 서버 검증 품질만 좋아짐

항목 OIDC OFF OIDC ON
서버 검증 accessToken 조회 ID Token 검증
표준성
보안 보통 더 좋음
Firebase 직접 로그인

 

마지막으로 정리

  • ❌ OIDC = Firebase Custom Token ❌
  • ✅ OIDC = 서버 검증용 JWT
  • ✅ Firebase Custom Token = Firebase 로그인용 JWT
  • 🔥 둘 사이에는 반드시 서버가 존재
728x90
LIST