7
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

MFA Token を Alfred Workflow で簡単生成する(暗号化あり)

以前から CLI で Authy と共通の MFA Token を生成する でトークンを生成してたんですが、トークンが欲しい時は大抵 Web サービスを利用しているときや awscli で Enter MFA Code: と聞かれたときであり、いちいち CLI で生成するのが面倒です。

Mac でおなじみの高機能ランチャー Alfred の Workflow(有料オプション)を使えば柔軟な機能定義ができるので、Alfred Workflow で MFA Token を簡単に生成できるようにしました。半年以上自分の環境で運用していたのですが、こなれてきたので晒します。

類似の workflow が既にあったのですが、シークレットキーを平文で管理したくなかったので、CLI で Authy と共通の MFA Token を生成する で行った手法と同じ方法で暗号化しています。

生成したトークンはクリップボードにコピーされるのと同時に、直前のウィンドウに自動的にペーストされるので、awscli のように Terminal でトークンを求められる場合でも快適に使えます。

screenshot0.jpg

screenshot1.jpg

screenshot2.jpg

機能

  • mfa SERVICE と入力することで、登録したサービスがインクリメンタルサーチされます。
    • 実際にはサービス一覧を grep しているので、部分マッチします。
  • 生成したトークンは、クリップボードに入るのと同時に直前のウィンドウのカーソル位置に自動ペーストされます。
  • 各サービスのトークン生成に必要なシークレットキーは、OpenSSL の RSA キーで暗号化して保持しています。
    • ですので、トークン生成のたびにパスフレーズの入力が必要になります。
  • データ+暗号化キーの初期化、サービスの追加・削除も Alfred 経由で可能です。

screenshot3.jpg

事前準備

利用するには、oath-toolkit のインストールが必要です。
oathtool というコマンドで HTOP/TOTP Token が生成可能になります。

Homebrew でさくっとインストールしましょう。

brew install oath-toolkit

Terminal で oathtool と入力し、ヘルプが表示されればインストール OK です。

workflow のインストール

以下のページから workflow を取得してインストールしてください。

使い方

初回は RSA キーの初期化が必要です。

Alfred のウィンドウで mfa init と入力し、初期化処理を行ってください。
キーを作成する際のパスフレーズを聞かれますので、お好きなものを入力してください。

この後登録する各サービスのシークレットキーを暗号化するためのものです。

サービスの追加

Alfred のウィンドウで mfa add サービス名 シークレットキー と入力することで、新規のサービスを追加できます。

シークレットキーは基本的には MFA 登録時の QR コードが表示されたタイミングでしか取得できませんが、Authy を使っている方は、後から無理矢理シークレットキーを抜き出すことが出来ます。
CLI で Authy と共通の MFA Token を生成する を参考にしてください。

トークンの生成

Alfred のウィンドウで mfa サービス名 でインクリメンタルサーチができます。
サービス名の一部でもマッチします。
直近で利用したサービスが上位に来るようにリストを自動調整しています。

サービスの削除

Alfred のウィンドウで mfa rm サービス名 と入力することで、既存のサービスを削除できます。

おまけ

生成されるリストや暗号化の手法は CLI で Authy と共通の MFA Token を生成する と同じなので、記事中の mfacodegen コマンドで workflow で管理しているファイルをそのまま利用できます。

参照するデータのパスを変える必要はありますが。


Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
7
Help us understand the problem. What are the problem?