Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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

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

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

https://github.com/u-minor/alfred-mfa-workflow

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 を取得してインストールしてください。

https://github.com/u-minor/alfred-mfa-workflow/releases

使い方

初回は 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 で管理しているファイルをそのまま利用できます。

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


u-minor
sprocket
"Sprocket(スプロケット)は、Webサイトにおけるコンバージョン(購入・入会・資料請求・問合せ等)を増やしたい企業様向けに、自社開発のWeb接客ツールの導入及びコンバージョン改善コンサルティングを行っている会社です。 "
https://www.sprocket.bz/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした