[Flutter] Firebase App check, Debug build, Unauthenticated error

seulinger·2024년 2월 15일
0

개발노트

목록 보기
3/5

결론만 보시려면 여기로 이동하세요!

수우주를 개발하던 중 기왕하는 거 Firebase에서 강력히 추천하고 있는 App check 기능을 포함하여 개발하였다.

앱 체크를 사용하면 Firebase의 여러 서비스, Google cloud 서비스의 일부를 사용할 때 인증된 앱인지를 확인하여 인증된 앱이 아닌 경우 여러 권한 부여를 막을 수 있도록 하고 있다.

정식 배포되는 앱에서는 구글이 알아서 앱이 변조 되었는지 아닌지 알아서 확인할테니 앱 체크 통과에 문제가 없겠지만, 나는 개발을 하면서 디버그 버전의 앱도 항상 시험해 봐야했기에, Firebase 문서의 flutter로 디버그 제공자와 함께 앱 체크 사용을 참고하여 Firebase Console에 관련된 디버그 토큰을 추가하였다.

처음에 관련 작업을 할 때에는 잘 작동하였다.

그런데, 얼마 후 아래와 같은 에러를 firebase의 cloud functions에서 발생시켰다.

com.google.firebase.functions.FirebaseFunctionsException: Unauthenticated, {code: unauthenticated, message: Unauthenticated}

왜 이러지? 역시 stack overflow에는 답이 있지 않을까? 하고 찾아봤는데, google console에서 해당 functions를 모든 사용자에게 접근 권한을 주라는 것이었다.

모든 사용자에게 접근 권한을 주면 앱체크를 설정한 이유가 없는 거 아닌가?

뭔가 위험해 보여서 권한을 주는 건 좀 나중에 해보자고 마음먹고, 이리 찾고 저리 찾아봐도 별다른 해결 방법이 없었다.

App check를 포기해야 하나 고민이 되었지만, 결국 답을 찾았다.

문제는 debug token이 바뀐 것 때문이었다.

firebase에서 debug token을 추가하고 나서 실제 debug token값을 볼 수는 없도록 마스킹되어 있어서, 잘 몰랐는데, 이게 변경되고 있는 것이었다.

테스트하는 기기에 따라서 debug token이 배정되는 방식일거라고 생각했는데, 그게 아니라 앱이 삭제되었다가 설치되는 경우에 이 token이 바뀌는 것 같아보였다.
(firebase 문서 상에 좀 더 자세한 내용을 찾을 수 있을 지 뒤져봤는데, 잘 나오지 않아서 정확한 정보는 아닙니다...)

그래서 같은 기기여도 배포용 앱 버전을 설치해서 테스트 해보고, 다시 테스트 버전을 설치하게 되면, 이 과정에서 debug token이 변경되니까 debug token을 삭제하고 다시 추가해야 한다.

결론

App check를 적용하고 있고, Unauthenticated 에러를 겪고 있다면, debug token 재설정을 한번 더 해보면 문제가 해결될 수도 있다!

나만의 계산기가 필요하시다면 구글플레이에서 수우주를 다운로드하세요.

0개의 댓글