본문 바로가기
PulseBoard

🔐 카카오 로그인은 왜 Firebase Email/Password로 쓰면 안 될까?

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

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 방식이 유일한 정답이다.

 

https://llldddjjj.tistory.com/entry/iOSFireBase-Custom-Token%EC%9C%BC%EB%A1%9C-KakaoTalk%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%98%EA%B8%B0

 

[iOS]FireBase Custom Token, KakaoTalk로그인하기.

Swift FireBase 이용하여 카카오톡 로그인하기.Date: 2018.4.18Language: Swift 3.3앱에서 카카오톡을 이용하여 Firebase에 연동하고 싶을때 내가한 경험들을 작성해 놓으려고한다. 서버와의 통신을 위해 NSURLSes

llldddjjj.tistory.com

 

728x90
LIST