Deep Link 도입 삽질기 - 네? SHA-256 인증을 도입하라고요? 제가요?

devkimsia·2025년 8월 19일

React Native로 구현된 크로스 플랫폼 앱에 딥링크를 도입해 달라는 요구사항을 받았다.

sdk 라이브러리 설치, appsflyer에 앱 추가하고 sdk 연결하기 까지는 무난하게 되었다.

onelink 도메인도 appsflyer에서 제공해주어서 쉽게 새로 팠다.

문제는 안드로이드에서 앱링크를 사용하려면 SHA-256 서명을 RN프로젝트에 추가하라는데?

이 서명이 왜 필요한지, 어떻게 추가할 수 있는지를 전혀 몰랐다는 것 …

공식문서를 봐도,

참고 그림을 봐도 전혀 무슨 소리인지 이해가 되지 않았고,

지피티에 질문해서 하기와 같은 결론을 얻어내었다.

📌 PKCE를 거치면 얻게 되는 것

  • code_verifier - a large random string generated by the client
  • code_challenge - the SHA 256 of the code_verifier

요약하자면

  • SHA-256은 어떤 프로토콜이나 정책이 아닌 단순한 ‘해시 함수’.
  • code_verifier를 전달하면 SHA-256 해시함수를 통해 해시 값을 반환하는구나.
  • 이 해시 값을 처리하는 것은 OAuth 2.0 인증 과정과 서버.
  • AppsFlyer 서버에서는 정확히 어떻게 처리하는지 모르지겠만, code_verifiercode_challenge일치성을 검증하는 로직이 있겠구나.

라는 결론에 도달함.

이것을 이해하고 다시 위의 RN공식문서를 보니 이해가 잘 되었다.

그런데 이제 어떻게 구현하지?

인증서를 내 앱에 구현하기 위해 많은 서치를 해보았다…

💥 그러나! SHA-256 인증을 구현할 필요 없었다 …

참고 문서 : Android initial setup

우리 프로젝트는 이미 플레이 스토어에 서비스 중인 상태였다.

→ 당연히 keystore 파일이 플레이스토어에 올라간 상태였음.

→ keystore를 업로드했다면 해당 keystore에 종속된 SHA-256 인증도 있을것이고…

→ appsFlyer 공식문서를 확인하니 SHA-256 인증 관련 내용이 있었음.

→ 문서를 보고 우리 서비스 플레이 콘솔에 들어가보니 … 당연히 서명키 인증이 있었더랬다 😂

✏️ 느낀 점

공식 문서를 진작 봤으면 될 걸 너무 멀리 가서, 이미 구현되어 있던 것의 원리를 파고 들었다.

그치만 해시함수를 추상적으로만 배우고 알고리즘이나 달달 외웠지… 이렇게 실제로 사용하는 예시를 보니 헛으로 공부한건 아니라서 재밌기도 했다.

2개의 댓글

comment-user-thumbnail
2025년 9월 11일

안녕하세요 ! 원링크메니지먼트는 어디서 찾을 수 있나요 ? sha256 코드를 appsflyer어느곳에 셋 해주어야 하는지 알고 싶어요₩

1개의 답글