はじめに
iOSのショートカットを作成する上で一度は悩むことは、ショートカット内部で扱う秘密データ(APIで扱うAPIキーやパスワードなどのトークン文字列)をどう管理するかではないでしょうか。
この管理方法について、検討した内容を共有したい思います。
前提
- iOSのショートカットを使用するため、iOS12以上が必要です。
- また、iPhoneの1passwordアプリを使用します。
よくある管理方法の問題
いろんな人が作成したショートカットの中身を見てみると、以下のように秘密データを管理しているケースに遭遇します。
- メモアプリ(あるいは リマインダーアプリ)に秘密データを保存し、ショートカット実行時にメモアプリから検索する。
- ショートカット内部に秘密データをハードコーディングする。
- ショートカット実行時にアラートを表示し、秘密データを入力させる。
メモアプリから検索する方法は、メモアプリがパスワードで保護されていないため、秘密データを他人に見られる恐れがあります。同様に、ハードコーディングする方法についても、ショートカットの内部処理を見れば、秘密データを他人に見られる恐れがあります。
ショーカット実行時に秘密データをアラートに表示する方法は、上記方法よりは良さそうに感じますが、秘密データをどこからか検索する手間やコピーしたクリップボードの秘密データが残ったままになる恐れがあります。
解決方法
上記の管理方法の解決方法として、1passwordのパスワード管理アプリを使う方法を提案したいと思います。
1passwordアプリで管理する利点としては、以下の通りです。
- 秘密データがマスターパスワードで保護されているため、他人に秘密データを容易に見られる心配がない。
- 1passwordのURLスキームを使えば、1passwordの秘密データを検索する(絞りこむ)ことができる。
- 例えば、
onepassword://search/<検索ワード>
の形式で1passwordを起動できます。 - URLスキームの仕様の詳細については、こちらを参照。
- 例えば、
- 1passwordに秘密データが保存されていなくても、実行時に秘密データを作成できる。
- 1passwordの秘密データをワンタップでクリップボードでコピーできる。
ショートカットアプリでは1passwordアプリのURLスキームを実行時に呼び出すことができるため、以下のような手順で秘密データをショートカット内部で扱うことができます。
手順詳細
- ショートカットアプリから1passwrordアプリのURLスキームを起動する。
- 起動した1passwordアプリから秘密データをクリップボードにコピーする。
- クリップボードにコピー後、左上のアプリ名を押下し、ショートカットアプリに戻る。
- ショートカットアプリでクリップボードから秘密データを任意の変数にコピーする。
- 安全のためにクリップボードの秘密データをクリア(空文字列をコピー)する
- 任意の変数にコピーした秘密データをショートカット内部で使用する。
ショートカットの作成
ここでは、1passwordアプリからGoogleのアカウントのトークンを表示する
ショートカットの作成例について説明します。
手順詳細
- ショートカットの新規作成画面を開きます。
- アクションの
URLを開く
を追加し、onepassword://search/google
をURLに設定します。- この処理で、1passwordが起動し、
google
のキーワードで検索された状態になります。
- この処理で、1passwordが起動し、
- スクリプティングの
待機
を追加します。- この処理で、1passwordのアプリからショートカットアプリに戻るまで、ショートカットアプリが待機状態になります。
- アクションの
変数に設定
を追加します。- 変数を仮にtokenとして、変数tokenをクリップボードに設定にします。
- アクションの
テキスト
を追加します。- 変数tokenを使用して、秘密データを表示するテキストを作成します。
- ここでは、
トークンはXXXXです
のような形式のテキストになります。
- アクションの
クイックルック
を追加します。- 作成したテキストをクイックルックで表示します。
- クリップボード上の秘密データをクリアするために、アクションの
テキスト
を追加し、空のテキストを追加します。 - 最後にアクションの
クリップボードにコピー
を追加し、空のテキストをクリップボードにコピーします。
参考までに、上記で作成したショートカットのiCloudの共有リンクを貼っておきます。
さいごに
秘密データの管理方法について、1passwordを活用する方法について提案しました。秘密データを管理する際の参考になれば幸いです。