はじめに
WorkatoのOAuth2コネクションで、突然の「Connection lost」.....。
こんな事象を経験した方がいるかもしれません。
今まで問題なく使えていたコネクションが急に動かなくなるとびっくりしますよね。
でも大丈夫です。原因と対処方法が分かれば怖くないです。
コネクションのロストとは何なのか?
Workatoのコネクタでは、ご存知の通り様々な接続方法に対応しています。
(Basic認証、APIキー認証、OAuth2.0認証、その他)
OAuth2を例に挙げると、ユーザーが権限を委譲したクライアントアプリを通じて発行されたアクセストークンを使用して、Workatoとサービス間でやり取りします。
アクセストークンの性質上、有効期限は(どんなに長くても)ほんの数時間です。
Workatoレシピで当該コネクタのポーリングトリガーやアクションが実行されると、サービス側への通信が発生しますので、期限切れの場合はサービスから「無効なトークンですよ」という反応が返ってきます。
コネクタ内部でトークンの有効期限切れを検知すると、リフレッシュの処理、すなわちサービス側へのトークンの再発行を要求します。
このとき何かしらの要因で失敗すると、Workatoではコネクションのロストという結果になります。
原因別の対処方法
トークンのリフレッシュ時に失敗する原因は3つ考えられます。
原因①連携サービス側のメンテナンスや停止
タイミングが悪く連携先サービスがメンテナンス中だったり、障害による停止等のサーバーが応答できない状態にあった場合には、コネクションを確立できません。
<対処>
一時的な事象ですので、連携先サービスが再開されていることを確認(*)し、『Check Connection』をクリックします。
(*SaaS等ではステータスを公開していることがほとんどです)
原因②接続したアカウントに問題が生じた
管理者により連携先サービスのアクセス権が変更され、コネクションを作成したユーザーアカウントが削除されたり、要求するスコープの権限を喪失した場合には認証に失敗します。
<対処>
一度コネクションを切断して、生きている・権限が十分に付与されたアカウントで再接続します。
<Tips>
こうした影響を避けるため、OAuth認証のコネクションに利用するアカウントは、バイネーム(人間ユーザー)アカウントよりも、システム連携用アカウントでの運用がお勧めです。
原因③コネクタの不具合
原因①や②の対処法を試しても改善しない場合は、Workato標準のコネクタであれば当社(リックソフト)などのパートナーかWorkato社へ問い合わせる、カスタムコネクタであればコネクタ提供元のベンダーに問い合わせることをお勧めします。
特にコネクタのアップデート後にロストした場合は、認証に係る処理に予期せぬ変更が加わっていて、不具合が起きている可能性があります。(要はバグです)
もしも問題のあるバージョンを自社の本番環境に適用してしまった場合は、以前のバージョンに戻した上で『Check Connection』で接続を復旧してください。稼働中のレシピへの影響を防げます。
さいごに
今回はOAuth2認証を例に、接続不具合となり得る原因・対処法を紹介しましたが、APIキーによる認証でも同様で、サービス側の設定を変更してそのAPIキーの無効化や権限剥奪などを行うと、コネクションがロストします。
Workatoのレシピを構築する過程で、連携先サービスとの接続を行う際にビルダーが自分のアカウントを用いて、または当時の主要なビジネスユーザーのアカウントを用いてコネクションを作成して、本番利用に至る場合があると思います。
OAuth2認証の特徴として、ユーザー単位でクライアントアプリに認可の権限を移譲するため、この「ユーザー」という部分で、原因②の危機にさらされやすいです。
社員の入退社や組織変更によってコネクションを作成したユーザーアカウントが資格を喪失することがあるので、運用上の注意が必要です。
コネクションについては、運用・監査の観点で問題ないものを管理者が作成して、「これを使って」とビルダーに周知して使ってもらう運用がベストだと思います。