LoginWithTheBackendTokenAsync signature 오류

문의를 남기실 경우 다음 항목을 작성해 주시면 빠른 답변 처리에 도움이 됩니다.

  • 프로젝트명 :
  • 뒤끝SDK 버전 : 4.6.3-dotnet4
  • 에러 코드 : 401, bad signature, 잘못된 signature 입니다 // 500, Cannot read property ‘gamer_id’ of undefined

LoginWithTheBackendTokenAsync 호출 후
위 에러가 자주 발생합니다. (CustomLoginAsync으로 로그인 한 유저입니다.)
토큰이 만료된 경우도 아니라 무시하고 다시 로그인 시키기도 애매합니다.
무슨 이유로 발생하는 에러인가요.

안녕하세요 개발자님

우선 로그인시 async 함수를 사용하신다면 saveToken함수를 호출하고 계신가요??

해당 함수 호출 여부를 확인 부탁드리겠습니다.


뒤끝에서는 패킷의 변조 및 스니핑을 방지하기 위해 패킷을 암호화 하고 있고, 패킷의 정보와 암호화 정보가 일치하지 않는 경우 bad signature가 발생할 수 있습니다.

일반적인 경우 시그니처 에러가 발생하지 않지만,
다른 개발자분들이 많이 겪으신 현상 중 클라이언트 시간이 현재 서버 시간과 차이가 나는 경우 (1,2초 차이가 아닌 UTC 기준 10분 이상으로 텀이 긴 경우) 시그니처 에러가 발생한 경우가 있었습니다.
시간값이 클라이언트 로컬 시간인지 확인 부탁드리겠습니다.


동시에 여러 Async 함수를 호출하는 경우 401 bad signature와 500 에러가 발생할 수 있습니다.

클라이언트에서 데이터를 전송하고자 함수를 호출 시 해당 데이터는 바로 서버로 전송되는 것이 아닌
OS의 스케줄러에 따라 적절한 시점에 전송이 되게 됩니다.
일반적으로는 사람이 인지할 수 없을 정도로 짧은 시간 안에 전송되지만, 이 경우에도 바로 전송되는 것이 아닌 잠시간의 대기시간이 존재합니다.

이 때 여러 Async 함수를 호출한 경우 여러개의 Async 함수가 동시에 서버로 요청을 보낼 수 있습니다.

이 경우 각 요청별로 사용해야 할 값이 중복되는 경우 1번째 요청에서 사용한 값이 2번째 요청에서도 필요한 경우 등 등의 경우에서
최종적 읽기 일관성이 보장이 안되어 요청들이 실패할 수 있습니다.

로그인의 경우 엑세스토큰, gamer_id 등이 다른 함수등에도 모두 사용되는 정보값이기 때문에 최종적 읽기 일관성이 보장이 안되어 요청들이 실패할 수 있습니다.


이 외에 서버에 순간적으로 로그인 요청이 몰리는 경우 500, Cannot read property ‘gamer_id’ of undefined 에러가 발생하는 것도 확인을 하였습니다.

해당 현상은 현재 지속적으로 픽스를 진행중입니다. 이용에 불편을 드려 죄송합니다.


마지막으로 토큰이 만료된 경우도 아니라 재로그인 시키기 애매하다고 말씀하셨는데
해당 현상이 발생하시는 경우에는 재로그인을 시키도록 플로우를 짜시면
유저입장에서는 곧바로 로그인을 시키면 되는 것이기 때문에 큰 혼란은 없을 것 같습니다.

새로 로그인을 한 경우 새로운 엑세스토큰이 발급됩니다.

좋아요 1

답변 감사합니다.

500 에러는 동시 요청이나 로그인이 몰리는 경우일 것 같네요.
해당 에러들은 재로그인 처리하도록 하겠습니다.

그리고 테스트 해 본 결과 401은 LoginWithTheBackendTokenAsync을 호출하고 콜백 받기전 앱이 종료된 후 재실행을 하는 경우에도 발생하는것 같습니다.

LoginWithTheBackendTokenAsync 함수를 호출한 경우에는 엑세스토큰이 재발급 됩니다.

이 경우 saveToken함수를 호출하여 재발급한 엑세스토큰을 로컬에 저장해주어야 되는데요,

재발급한 엑세스토큰을 저장하기 전 실행을 종료하고 다시 재실행한 경우 로컬에는 재발급받기 전 엑세스토큰이 저장되어 있기 때문에 이 때 토큰로그인을 시도 시 401 에러가 발생할 수 있습니다.

추가로 현재는 유니티의 PlayerPrefs를 사용하여 엑세스토큰 등을 저장하기 때문에 부득이하게 엑세스토큰 발급 함수와 엑세스토큰 저장함수를 분리하여 제공하고 있습니다.

다음 업데이트에서는 이를 별도의 파일시스템 기능을 이용하여 엑세스 토큰 발급과 동시에 저장이 가능하도록 하는 패치가 이루어질 예정입니다.

이 점도 참고 부탁드리겠습니다.

더 나은 서비스를 제공하기 위해 노력하겠습니다.

감사합니다.

좋아요 1