JWT認証を利用したスクラッチ組織切り替えのやり方が変わった


何があったか

2019年6月15日以降、force:auth:jwt:grantを実行してデフォルトスクラッチ組織の切り替えが出来なくなりました。

Salesforce CLI のv46 アップデートが原因

2019年6月15日 あった Salesforce CLIv46 アップデートforce:auth:jwt:grant の仕様が若干変わったことが原因です。

ただし、6月19日にRelease Noteを確認したところ、該当文句が記載されていましたが、
6月22日に再度確認したらその言及が消えてしまったので今後アップデート以前の仕様に戻ることも期待しています。

6月22日に既存切り替え方式で試したところ、相変わらず切り替えられなかったので、とりあえずメモも兼ねてここに記載させて頂きます。

force:auth:jwt:grant の仕様が変わった

既存方式は、切り替え先のスクラッチ組織に対して force:auth:jwt:grant (--setdefaultusername) コマンドを実行してJWT認証が通ればデフォルトスクラッチ組織も変わる仕組みでした。

// 組織A → default | 組織B → non-default
> force:auth:jwt:grant --username 組織B --setdefaultusername (...) //組織B認証
// 組織A → NON-DEFAULT | 組織B → DEFAULT

それが、新方式は切り替え対象のスクラッチ組織から force:auth:logout コマンドで1回ログアウトしてからforce:auth:jwt:grantを実行しなければいけません。

// 組織A → default | 組織B → non-default
> force:auth:logout -targetusername 組織B                         //組織Bからログアウト
> force:auth:jwt:grant --username 組織B -setdefaultusername (...) //組織B認証
// 組織A → NON-DEFAULT | 組織B → DEFAULT

以上です。

またSalesforce CLIにアップデートがあれば、この記事も更新しておきます。