Cloud Data Fusion Salesforceプラグインを1.7.4へアップグレード:Security Tokenのバリデーション問題

Cloud Data Fusion Salesforceプラグインを1.7.4へアップグレード:Security Tokenのバリデーション問題

Cloud Data FusionのSalesforceプラグインversion 1.6.3を使用し、OAuth 2.0 Username-Password Flowで認証するパイプラインを運用していました。

SalesforceがUsername-Password Flowからの移行を進めていることを受け、新しいプラグインversion 1.7.4を検証し、Client Credentials認証への移行に向けた確認を行いました。

Salesforce: Retirement of OAuth 2.0 Username-Password Flow for Connected Apps

version 1.7.4では、以下の2つのOAuth Grant Typeをテストしました。

  1. Client Credentials
  2. Password Grant

Client Credentialsは問題なく動作しました。

一方、Password Grantをテストした際に、Security Tokenフィールドのバリデーションで予期しない挙動を確認しました。

Salesforceプラグイン1.7.4へのアップグレード

アップグレード時に気になった点の1つは、Google Cloud Data FusionのリリースノートではSalesforceプラグインversion 1.7.0までしか確認できなかった一方で、今回テストしていたのはversion 1.7.4だったことです。

既存のパイプラインに対する変更だったため、より広く適用する前に、認証方式の動作を慎重に確認することにしました。

Salesforceプラグインversion 1.7.4では、OAuth Grant Typeとして PasswordClient Credentials の両方を選択できます。

Salesforceプラグイン1.7.4で利用可能なOAuth Grant Type

Client Credentialsのテスト

まず、Client Credentials Flowをテストしました。

設定には、以下のSalesforce認証情報を使用します。

  1. Consumer Key
  2. Consumer Secret
  3. Login URL

Salesforce Connected AppとCloud Data Fusion側の各プロパティを設定したところ、Client Credentials認証は問題なく動作しました。

予期しない挙動が確認されたのは、Password Grantをテストしたときでした。

Password GrantでのSecurity Tokenバリデーション

Password Grantでは、以下の認証項目が用意されています。

  1. Username
  2. Password
  3. Security Token
  4. Consumer Key
  5. Consumer Secret

今回使用したSalesforce環境では、認証時にSecurity Tokenは必要ありませんでした。

しかし、Salesforceプラグインversion 1.7.4でSecurity Tokenフィールドを空欄にしたところ、以下のバリデーションエラーが表示されました。

Plain text
Security Token is required for password grant type authentication. Please provide the Salesforce security token.

Password Grantを選択した状態でSecurity Tokenを空欄にすると、バリデーションエラーになることを確認しました。

Password GrantでSecurity Tokenを空欄にした際のバリデーションエラー

空白文字を入力して検証

今回のSalesforce環境ではSecurity Tokenが不要だったため、Security Tokenフィールドを完全に空欄にする代わりに、半角スペースを1文字入力して検証しました。

その結果、Security Tokenに関するバリデーションエラーが表示されなくなりました。

また、バリデーションエラーの合計数も6件から5件に減少し、プラグイン側ではSecurity Tokenフィールドに値が入力されていると認識されたことを確認できました。

Security Tokenに半角スペースを入力した後のバリデーション結果

その後、残りの認証情報を設定してパイプラインを実行したところ、正常に完了しました。

今回の環境では、Security Tokenフィールドに半角スペースを設定しても、認証やパイプライン実行には影響しないことを確認できました。

注意点

IMPORTANT

今回確認した方法は、Salesforce Security Tokenの一般的な代替手段として使用するものではありません。

SalesforceでSecurity Tokenが必要かどうかは、Trusted IPなど、組織のセキュリティ設定によって異なります。

今回の半角スペースによる対応は、私たちの環境で確認したプラグイン側のバリデーション挙動に対する回避策です。

Server-to-Server連携では、Password Grantを継続して使用するのではなく、Client Credentialsへの移行が推奨されます。

まとめ

Cloud Data Fusion Salesforceプラグインversion 1.7.4を検証した結果、以下の点を確認しました。

  1. Client Credentials認証は問題なく動作した
  2. Password GrantではSecurity Tokenが必須項目として扱われた
  3. Security Tokenを空欄にするとバリデーションエラーになった
  4. Security Tokenフィールドに半角スペースを入力すると、該当するバリデーションエラーが解消された
  5. その後、今回の環境ではパイプラインを正常に実行できた

既存のCloud Data Fusion Salesforceパイプラインをアップグレードする場合、移行テスト時に確認しておきたいバリデーション挙動の1つです。