카카로 로그인 firebase 연동 문의 (idtoken aud 관련)

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS) 및 디벨로퍼스 앱ID를 알려주세요.


ID 476066

안녕하세요. 제가 현재 만들고 있는 앱이 카카오와 구글 등 다른 제공업체를 포함하고 있어
firebase 와 open id 연동을 하였습니다.

안드로이드, IOS 모두 정상적으로 연결이 되었고 잘 작동합니다.

위의 이미지와 같이 셋팅을 해서 잘 동작하고 있습니다.
그런데 웹 클라이언트 까지 연동하기 위해 코딩을 해보았는데…무언가 잘 안되어서 디버깅을 해봤는데요

파이어 베이스에서 아래와 같은 오류를 보냈습니다.
[firebase_auth/invalid-credential] The audience in ID Token [카카오자바key] does not match the expected audience [카카오네이티브키].

자세히 살펴보니 앱과 웹의 client id 가 다르게 설정되어 있다보니 잘못된 키라고보내는 것이더군요.

카카오 로그인 api에서 받은

idToken 을 decode 해보면 aud 부분이 바로 저 키 정보가 들어있다는 것을 알았습니다.
저 부분을 동일하게 셋팅해야 firebase 에서 동일한 provider, 동일한 아이디 라는 것을 판단 할 수 있을것 같은데요.

웹 인증할때 native 키나 rest api 키를 넣어보니 카카오 로그인이 되지 않고 잘못된 셋팅으로 오류가 나더라구요
앱이나 웹 모두 동일한 idToken.aud 값이 나오도록 할 수 있을까요?

혹시 제가 뭔가 잚못 알고 있을 수 있으니 관련 힌트를 주셔도 좋습니다.

감사합니다.

안녕하세요.

[firebase_auth/invalid-credential] The audience in ID Token [카카오자바key] does not match the expected audience [카카오네이티브키].

카카오 로그인 시, 액세스 토큰 및 ID 토큰 발급 에 사용된 앱키가 Javascript 키이고 firebase에 다르게 설정해서 에러 발생한 것 같은데요.

firebase를 이용해 인가코드요청 하실텐데, Javascript 키를 사용한 부분이 잘 이해가지 않네요.
현재 로그는 인가코드요청도 NATIVE_APP_KEY 사용하셔서 정상 처리되는 것으로 보입니다.

firebase에 NATIVE_APP_KEY 설정하셨는데, Javascript 키로 액세스 토큰 발급 받으신 내용 부연 설명해주시겠어요?

네 안녕하세요.

저는 지금 카카오 로그인을 앱도 만들고 있고 웹도 만들고 있습니다.
먼저 앱은 만들어서 잘 처리되었고 이때 firebase 설정을 native key 진행했어요.
문제 없이 잘 되었습니다.

그런데 이번에 웹을 만들려고 하니 웹은 javascript key로 연동하더라구요
그래서 카카오 로그인까지는 잘 되었습니다. 그 뒤 프로세스가 firebase 의 idtoken 을 넘겨서 인증하는데…
먼저 설정했던 native key 와 서로 맞지 않는 문제가 발생했습니다.

firebase 쪽에서는 그걸 client id 라고 하더라구요.
같은 카카오 로그인인데 플랫폼에 따라 id token 내의 aud 값이 달라지는 문제였습니다.

억지로 만든다면 firebase 에 open id 제공업체를 하나더 추가하면 되겠으나…
같은 회원인데 서로 다른 제공업체로 인식하여 다른 사람으로 처리가 되는 문제가 있어.
가능하다면 같은 key 로 맞추고 싶어서 방법이 있는지 문의 드렸습니다.

결론적으로
네이티브 로그인일때와 웹로그인일때 idToken 내의 aud 가 달라서 firebase 에서 하나의 제공업체 로그인 인식 처리가 어렵다…
입니다.

@tim.l
설명을 적다보니 원글과 비슷한데 혹시 이해가 되셨을까요?

인가코드 요청 및 토큰 발급은 카카오 SDK를 이용하시고 발급받은 idtoken을 firebase에서 사용하시나보군요.

앱키에 따라 보안도 다르고 검증로직도 달라서 firebase 에 open id 제공업체를 추가 해야할 것으로 보이나 말씀하신 문제가 있고
SDK 사용하지 말고 REST-API 방식으로 REST-API 키 사용 일원화해서 사용하는 방법이 있긴 한데

둘다 최선의 방법은 아닌듯하여.
아쉽지만, 운영하시는 상황에 그나마 적합한 방법 검토 해보시면 좋을 것 같습니다.

1개의 좋아요

네 저도 RESTAPI 방식으로 해야겠다는 생각을 하고 있었는데 어쩔수가 없나 보네요.
Firebase 에서 멀티 Aud 를 지원해주면 좋았을텐데 아쉽네요
빠른 답변 감ㅅ합니다.

1개의 좋아요