生涯未熟

生涯未熟

プログラミングをちょこちょこと。

Authyで発行される2段階認証コードを1Passwordでも発行する

最近はどんなサービスにも2段階認証は付いていますが、その2段階認証コードを発行するAuthenticatorであるAuthyについてのお話をば。

AuthenticatorはAuthyに限らずGoogle Authenticatorなど色々ありますが、複数のAuthenticatorを使ってるよ!って方は少ないと思います。
出来れば一つのAuthenticatorで済ませたいのですが、例えばメールのデリバリーサービスで有名なSendGridはAuthyのみが利用できるAuthenticatorとして設定できます。
SendGridもAuthyもTwilioが作っているので、そうしたくなる気持ちは分かるのですが利用者としては非常に不便であります。

また、1Passwordで2段階認証コードを発行してチームメンバーで共有するといったことをしているのですが、そういった意味でもAuthyのみの制限をかけられると非常に困るわけです。

SendGridではAuthy以外にSMSでの2段階認証も利用できるので、最初はSMS認証にして認証メッセージが届いたIFTTTでSlackに投稿するみたいな対応を取っていました。
しかし、IFTTTがいつの間にかバックグラウンドで殺されていてSlackに投稿できていなかったりという事象が多発し、これはどうにもならんなぁと匙を投げていました。

そんな折に、久々にこのあたりの問題どうにかできないかなーとインターネットを散策しているとこんなGistを発見👀

Export TOTP tokens from Authy · GitHub

うおー!探し求めていたものだ!

記事内でやっていることとしては

  • Authyのデスクトップアプリで2段階認証の登録をする
  • Authyを任意のポートを開いた状態で起動する
  • Chromeにて開いたポートに繋ぎに行く
  • Gistに貼られているスクリプトChromeの開発ツールを使って実行する
  • 表示されたQRコードを1Passwordなどで登録する

てな感じになります。

スクリプトではGist内で説明があるように、TOTPで使用する秘密鍵がAuthy側では16進数になっているので32進数に変換したり、QRコードをコンソール上に吐き出すための準備をしたりして最終的にotpauth URI を生成してQRコードを吐いてるみたいですね。
ちなみにMight workとなっているGoogle Authenticatorですが、自分の環境では動きませんでした。なんか設定しないとダメなのかな・・・?🤔

とまぁ久々にこんなハックをしてる人がいるのか!と感動しました。何事も簡単に諦めちゃいかんですね・・・!