Firebase로 인증 시스템을 구성하다 보면
카카오 로그인을 붙이는 순간 이런 고민이 생긴다.
“카카오 로그인으로 받은 정보로
Firebase email / password 계정을 만들면 되지 않나?”
실제로 많은 글에서 이런 방식이 소개되어 있고,
기술적으로는 ‘동작’한다.
하지만 설계·보안·운영 관점에서 보면 명백한 안티패턴이다.
이 글에서는
👉 왜 이 방식이 문제가 되는지
👉 Firebase가 권장하는 올바른 구조는 무엇인지
정리해본다.
🔎 배경: Firebase Auth와 카카오 로그인
- Firebase Auth
- Google, Apple, Email/Password는 기본 제공
- ❌ Kakao는 공식 인증 Provider가 아님
- Kakao Login
- OAuth 기반 인증
- 로그인 결과로 accessToken, userId 제공
이 차이 때문에
Firebase와 Kakao 사이에는 중간 연결 방식이 필요하다.
❌ 흔히 보이는 잘못된 접근: Email/Password 매핑
다음과 같은 방식이 인터넷에 자주 등장한다.
email = kakao_<userId>@kakao.com
password = kakao_access_token
- 카카오 userId를 이메일로 변환
- 카카오 accessToken을 Firebase 비밀번호로 사용
겉보기엔 단순하고, 서버도 필요 없어 보인다.
하지만 이 방식에는 치명적인 문제들이 있다.
🚨 문제 1. accessToken은 비밀번호가 아니다
| 구분 | access Token | password |
| 목적 | 임시 인증 | 장기 인증 |
| 수명 | 짧음 (만료됨) | 길어야 함 |
| 재발급 | 가능 | 보통 불가 |
카카오 accessToken은:
- 만료된다
- 재발급된다
- 네트워크·로그에 노출될 수 있다
👉 이런 값을 비밀번호로 사용하는 것은 보안적으로 금기다.
🚨 문제 2. 토큰 만료 = 비밀번호 변경?
accessToken이 만료되면 어떻게 될까?
- 다시 카카오 로그인
- 새로운 accessToken 발급
- ❓ Firebase 비밀번호도 변경?
👉 인증 흐름 자체가 붕괴된다.
🚨 문제 3. 인증 책임이 뒤섞인다
정상적인 인증 책임 분리:
Kakao → "이 사용자는 누구인가?"
Firebase → "우리 서비스 사용자로 로그인 허용할까?"
Email/Password 매핑 시:
Kakao 토큰 = Firebase 인증 수단
👉 OAuth와 자체 인증의 경계가 무너진다.
🚨 문제 4. 계정 확장이 불가능해진다
초기에는 괜찮아 보인다.
- Kakao 로그인만 있음
- Firebase UID 하나
하지만 나중에:
- Apple 로그인 추가
- Google 로그인 추가
👉 같은 사용자인데 UID가 서로 다름
👉 계정 병합이 거의 불가능
🔥 Firebase가 제공하는 정답: Custom Token
Firebase는 이런 외부 OAuth Provider를 위해
Custom Token 인증 방식을 제공한다.
https://firebase.google.com/docs/auth/admin/create-custom-tokens?hl=ko
커스텀 토큰 만들기 | Firebase Authentication
의견 보내기 커스텀 토큰 만들기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Firebase는 보안 JSON 웹 토큰(JWT)으로 사용자나 기기 인증이 가능해 전체 인증
firebase.google.com
카카오 로그인
→ accessToken 획득
→ 서버에서 카카오 토큰 검증
→ Firebase Admin SDK로 Custom Token 발급
→ Firebase Auth 로그인
핵심 포인트
- JWT(Custom Token)는 Firebase가 발급
- 서버는 검증 + 중개자 역할
- Firebase 보안 모델 유지
❓ “서버 없이 할 수는 없을까?”
❌ 없다.
Firebase Custom Token은:
- Firebase Admin SDK로만 생성 가능
- Admin SDK는 서버 전용
- 클라이언트에서 생성 불가 (보안상 절대 금지)
👉 그래서 Cloud Functions / 별도 서버가 필수
📌 정리
| 방식 | 가능 | 권장 |
| Kakao → Email/Password 매핑 | ⚠️ | ❌ |
| Kakao → Firebase Custom Token | ✅ | ✅ |
| Kakao → Firebase 직접 로그인 | ❌ | ❌ |
✍️ 결론
“되니까 써도 된다”는
인증 시스템에서는 절대 기준이 아니다.
Firebase를 인증 시스템으로 사용하는 순간,
외부 OAuth Provider(Kakao, Naver 등)는
Custom Token 방식이 유일한 정답이다.
[iOS]FireBase Custom Token, KakaoTalk로그인하기.
Swift FireBase 이용하여 카카오톡 로그인하기.Date: 2018.4.18Language: Swift 3.3앱에서 카카오톡을 이용하여 Firebase에 연동하고 싶을때 내가한 경험들을 작성해 놓으려고한다. 서버와의 통신을 위해 NSURLSes
llldddjjj.tistory.com
'PulseBoard' 카테고리의 다른 글
| 🔥 Firebase Functions 시작하다가 npm 에러와 경고를 만났을 때 정리 (0) | 2025.12.24 |
|---|---|
| 카카오 OpenID Connect를 써도 Firebase Custom Token이 필요한 이유 (0) | 2025.12.24 |
| Firebase Google 로그인 튜토리얼을 “실서비스 아키텍처”로 리팩토링하기 (iOS) (0) | 2025.12.23 |
| 🤔 Firebase Apple 로그인 튜토리얼 코드 → 우리가 만든 구조 (1) | 2025.12.22 |
| UIKit + Firebase Apple 로그인, MVVM & Coordinator로 설계하기 (0) | 2025.12.22 |