はじめに
SaaS連携における課題の1つとして、APIトークンの有効期限の問題が挙げられます。
例えば、Atlassian Cloudの場合、次の通り明記されています。
API トークンの有効期限を選択します。
トークンの有効期限は 1 〜 365 日です。
特定のAPIエンドポイントに問い合わせることで有効期限を知ることができれば、そのAPIエンドポイントのレスポンスをもとにSlack通知を行うことはできますが、残念ながら全てのサービスがそのような機能を提供しているわけではないため、カレンダーやリマインダー等に登録しておくという対応が良くある方法かと思います。
しかしながら、カレンダーやリマインダー等に登録するというのは属人的対応であり、担当者がそれらへの入力作業を怠れば、いつの間にかAPIトークンが期限切れで障害が発生ということが発生する恐れもあります。(例えば作業がマルチタスクで、入力作業を後回しにして忘れることもあるでしょう)
Workatoでは、少しの工夫を行うことで、簡易的ではありますが、カレンダーやリマインダーに頼らずAPIトークンの有効期限を通知する方法を実現することができます。
実現方法
Workatoの「Recipe Opsコネクター」を利用することで、コネクションが認可された日時(Workatoとアプリケーション間の接続が確立された日時)を取得することができます。
これをもとに、次のような処理を実装することで、APIトークンの有効期限と残り日数をSlack等やTeamsで定期的に通知することができます。
レシピ
上記をもとにレシピを作成すると、次のようなレシピになります。
手順
1. トリガーを定義
Scheduler by Workatoコネクターをトリガーに追加し、以下の通りに定義します。
2. Step2:変数定義
Variables by Workatoコネクターの「Create variables」アクションを追加し、以下の通り定義します。
-
initial_expire_daysには、APIトークンの有効期限(日数)をセットします -
connection_nameには、有効期限をチェックするコネクション名を完全一致で入力します
3. Step3:コネクション情報の取得
RecipeOps by Workatoコネクターの「List connections」アクションを追加し、以下の通り定義します。
-
Connection_nameには、Step2の「connection_name」データピルをセットします -
Applicationには、当該コネクションに対するアプリケーションを指定します
4. Step4:変数定義
Variables by Workatoコネクターの「Create variables」アクションを追加し、以下の通り定義します。
-
expire_date: Step3の「Authorized at」データピルと、Step2の「initial_expire_days」データピルを用いて、次の通りformulaを入力します
<Authorized at | Step3> + <initial_expire_days | Step2>.days
5. Step5:変数定義
Variables by Workatoコネクターの「Create variables」アクションを追加し、以下の通り定義します。
-
expire_rest_days: 残日数の計算、次の通りformulaを入力します
((<expire_date | Step4> - now) / (24 * 60 * 60)).floor
-
expire_date_s: 有効期限の日付の文字列フォーマット、次の通りformulaを入力します
<expire_date | Step4>.in_time_zone("Asia/Tokyo").strftime("%Y/%m/%d")
-
authorized_date_s: 認可日(Workato上におけるコネクション確立日)の日付の文字列フォーマット、次の通りformulaを入力します
<authorized_at | Step3>.in_time_zone("Asia/Tokyo").strftime("%Y/%m/%d")
6. Step6:Workbot for Slackでメッセージ通知
以下を参考に設定を行います。(出力したい形でメッセージを定義します)
出力結果
以上の通りレシピを実装すると、以下のような通知が毎日午前8:00に、Slackの特定のチャンネルへ通知されるようになります。
まとめ
WorkatoのRecipe Opsの「List Connections」アクションを利用することで、指定されたWorkatoのコネクションがいつ接続確立されたか(日時)を確認することができ、その日時を利用することで、簡易的ではありますがAPIトークンの有効期限や残日数を算出できることがお分かりいただけたと思います。(目安としては十分であると思います)
また、上記の内容をSlack通知することで、Slack上で毎日当該コネクションに対応するAPIの有効期限(目安)を確認することができます。これにより、カレンダーやリマインダーに頼らないAPIトークンの有効期限の管理を実現することが可能になります。
本記事がWorkatoを管理する皆様の作業負荷軽減に少しでも役に立てましたら幸いです。
補足(注意事項)
ここで紹介した内容は、あくまでもWorkatoとアプリケーション間の接続が確立された日時であり、厳密なAPIトークンの有効期限ではありません。
このため、認証方式がヘッダ認証やBasic認証で、連携先アプリ上にて手動でAPIトークンあるいは認証情報を発行→Workatoのコネクションに反映という手順が発生する場合は、安全側を想定して有効期限(日数)を短縮するなど、タイムラグを考慮した対応が必要になります。
※アプリを管理する部門と、Workatoを管理する部門が異なり、APIトークンの受け渡しまでに時間が掛かる場合は、数日~1週間程度有効期限を短縮して考えておいた方がよいでしょう。
※認証方式がOAuth2の場合、APIトークンの発行日=コネクションが認可された日時であるため(認証認可とWorkatoのコネクション確立がほぼ同時であるため)、基本的に有効期限(日数)のずれが発生することはありません。










