서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론React Native의 경우, 여러가지 설정이 복잡하게 들어가있다. 우선 다음과 같은 flag들을 추가해야 한다.{ "expo": { "ios": { "entitlements": { "com.apple.developer.devicecheck.appattest-environment": "development" } } }}해당 코드는 app.json에 추가되어야 하는 파트이다.iOS APP을 빌드할 때 AppAttest 환경을 어떤 것을 사용할 것이냐에 대한 필드이다.const getDevic..
서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론iOS AppAttest도 앱의 변조 여부를 파악하는 역할을 한다. 하지만 iOS의 경우 키 복호화 등 절차가 너무 복잡해 라이브러리를 사용하여 문제를 해결하였다.// implementation("ch.veehait.devicecheck:devicecheck-appattest:0.9.6")lateinit var attest: AppleAppAttestinit { attest = AppleAppAttest( app = App(teamId, packageName), appleAppAttestEnvironmen..
서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론구글의 Integrity API Decode 과정에는 서비스 계정이 필요하다.https://playintegrity.googleapis.com/v1/$packageName:decodeIntegrityToken에 Header로 Authorization: Bearer를 넘겨줄 때, 본인의 계정을 사용할 필요가 없다. 오히려 사용해서는 안된다.반드시 서비스 계정을 생성, 그 서비스 계정의 json을 이용해 AccessToken을 받아오도록 하자.// implementation("com.google.auth:google-auth-library..
서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론우선 Play Integrity API는 앱의 무결성 검증. 즉 변조(해킹)된 앱으로 접속해 해킹하는 것을 방지하는 역할을 한다.무결성 검증은 배포 앱에서 가장 중요한 부분 중 하나이다.우선 Google Cloud Console의 설정을 요구한다.이 파트는 다른 블로그를 참고하길 바란다. 너무 잘 설명되어 있다.Firebase AppCheck와 직접 구현. 두 가지의 방법이 있다.우리는 직접 구현을 선택하였다.Springboot backend를 구현한다.여기가 가장 힘든 파트 중 하나이다.우선 자신의 환경에 맞추어 @RestContro..