1

iOS の Google Authenticator に問題があります。以下の標準コード スニペットを使用して TOTP キーを生成しています。

KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(keySize);
byte[] byteKey = keyGen.generateKey().getEncoded();
Base32 base32 = new Base32();
return base32.encodeAsString(byteKey);

生成されるコードは、以下のように末尾に = 記号が埋め込まれます。

6ICU5K45MHIZCMTR3DABCDFP7XSZGV4DVTRABCOPD5RDQRGOLTGQ====

次に、この文字列に基づいて適切な QR コードを生成しますが、一部のデバイスでスキャンすると問題が発生します。このコードは、Android で Google Authenticator を使用すると機能しますが、iOS バージョンを使用すると次のエラーで失敗します...

無効なバーコード

バーコード「otpauth://totp/MyDomain:user@user.com?secret=6ICU5K45MHIZCMTR3DABCDFP7XSZGV4DVTRABCOPD5RDQRGOLTGQ%3D%3D%3D%3D&issuer=MyDomain」は有効な認証トークン バーコードではありません。

ご覧のとおり、末尾の = パディングは秘密の文字列でエンコードされており、これが iOS でエラーを引き起こしているようです。これがiOSでは失敗するのにAndroidでは失敗する理由はわかりませんが、追加する必要があるものです

これはGA GitHubの古い問題ですが、同じ問題のようですが、解決策はありません... https://github.com/google/google-authenticator/issues/267

& これは、エンコードの前に文字列をシードすることで問題を回避した人ですが、これは Apple デバイスの上記の Google Authenticator のシナリオでは機能しません。特定の秘密が無効です

問題を回避する理由または考えられる方法についてのアイデアはありますか?

4

1 に答える 1