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가 신뢰하는 토큰
- Firebase가 직접 발급한 토큰
- Google / Apple 같은 내장 Provider의 Credential
- 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
'PulseBoard' 카테고리의 다른 글
| Firebase Functions 초기 환경 설정 해보기 (0) | 2025.12.24 |
|---|---|
| 🔥 Firebase Functions 시작하다가 npm 에러와 경고를 만났을 때 정리 (0) | 2025.12.24 |
| 🔐 카카오 로그인은 왜 Firebase Email/Password로 쓰면 안 될까? (0) | 2025.12.24 |
| Firebase Google 로그인 튜토리얼을 “실서비스 아키텍처”로 리팩토링하기 (iOS) (0) | 2025.12.23 |
| 🤔 Firebase Apple 로그인 튜토리얼 코드 → 우리가 만든 구조 (1) | 2025.12.22 |