programming/ETC

[ETC] 구글 OTP 인증 오류 해결 하기

LeeBorn 2022. 2. 12. 15:40
반응형

구글 OTP

구글 OTP 인증 오류 해결하기

* 자체 서버가 있고, 서버 및 코드를 수정할 수 있을 때의 문제 해결 방법입니다.

 

구글 OTP는 처음 사용할 때 QR코드를 스캔하거나, 키를 입력하여 일회용 비밀번호를 생성한다.

해당 번호들은 30초 간격으로 새로 생성되어서 일회용 비밀번호로 사용할 수 있다.

이 코드가 인증이 안 되는 경우 해결 방법.

 

1. 서버시간을 확인 후, 동기화한다.

클라이언트(휴대폰, 또는 컴퓨터)의 시간을 먼저 확인해보고, 서버의 시간을 확인해본다.

리눅스에선 date 명령어로 확인할 수 있는데, 이 시간이 클라이언트와 시간이 차이가 날 경우 인증이 되지 않을 수 있다.

이때 서버의 시간을 동기화해서, 클라이언트와 서버의 시간을 맞춰준다.

 

2. 인증코드 간격을 늘리는 방법

OTP hash

구글에서 'Google OTP Java'로 관련 소스들은 찾아보면 해시값을 여러 번 비교한다.

실제 클라이언트가 확인하고 있는 코드의 전후로 몇 개의 코드를 더 생성해서, 인증 여부를 체크한다.

그래서 이 간격을 늘려주면, 서버의 시간이 동기화가 되어있지 않더라도(2~3분 정도의 차이일 때)

인증값을 유효하게 처리해서 OTP 인증을 통과할 수 있다.

 

** 다만 2번째 방법은 OTP 정책에 따라서 OTP로의 기능을 상실할 수도 있기 때문에,

서버의 시간을 클라이언트와 동기화시켜주는 1번을 이용하는 게 좋을 것 같다.

반응형