서비스 중 Microsoft Authenticator, Authy로는 인증이 되지만 Google Authenticator로 인증이 되지 않는 오류가 있었다.
작년까지는 잘 되었던 것 같은데 앱이 업데이트(해당 업데이트에 앱명이 Google OTP에서 Google Authenticator로 변경되고, 아이콘도 바뀌었다) 된 후 새로 등록한 OTP에 대해서 오류가 발생한 것으로 파악됐다.
npm speakeasy package를 통해 코드를 생성하였는데
const speakeasy = require("speakeasy");
const base32 = require("hi-base32");
const url = speakeasy.otpauthURL({
secret: base32.decode(otp_secret_key),
issuer:system,
label: email,
algorithm: "sha512", // -> "sha1" 로 변경
period: 30,
});
알고리즘을 sha256, sha512로 생성하였을 때 인증 오류가 발생하고 sha1로 생성하였을 때 정상적으로 인증되었다.
찾아본 결과 Google Authenticator는 default로 sha1을 지원하는 것으로 파악된다.