LoginSignup
2
0

More than 1 year has passed since last update.

AutifyでSalesforceへの多要素認証ログインをテストする方法

Last updated at Posted at 2022-12-08

※※この記事は「Autifyアドベントカレンダー2022」9日目の記事です。

はじめまして、Autify カスタマーサクセスマネージャーの中村です。今回はSalesforceの開発をAutityでテストする際に2023年2月1日以降必須となるログイン時のMFA突破の手順をまとめましたのでぜひご参考ください。

背景と影響

2023年2月1日より、全Salesforce組織でログイン時に多要素認証を行うことが必須となり以下の影響があるため、現在AutifyでSalesforceをテストしている方もこちらの設定を行う必要がございます。

  • 組織の信頼済みIPアドレスリストにAutityのIPアドレスを追加することでメールやSMSによる認証をスキップ出来なくなる
  • 固定メールアドレスを用いてメールによる認証を通過出来なくなる

概要

Step 1. Autifyが用意するAuthenticator Appとテストを実行するSalesforceユーザを紐付ける為に1度だけ使用する「準備用シナリオ」を作成する
Step 2. Step 1で取得したキーを基に定期実行用の「完成版シナリオ」を作成する

手順

Step 1. Autifyが用意するAuthenticator Appとテストを実行するSalesforceユーザを紐付ける為に1度だけ使用する「準備用シナリオ」を作成する

mojikyo45_640-2.gif

①シナリオを新規作成し、開始URLに「SalesforceのログインページのURL」を入力し「レコーディングを開始」をクリック
※開始URLはテストする環境によって変わります
本番環境:https://login.salesforce.com
Sandbox環境:https://test.salesforce.com

※シナリオ名は準備用シナリオとします
開始URL.png

②テストを実行する「ユーザ名」と「パスワード」を入力し、「ログイン」をクリック
mojikyo45_640-2.gif

③「別の検証方法を選択」をクリック
mojikyo45_640-2.gif

④「認証アプリケーションからの確認コードを使用」をクリックし、「次へ
mojikyo45_640-2.gif

⑤「QR コードをスキャンできません」をクリック
mojikyo45_640-2.gif

⑥キーの上で「右クリック」し、Autify Recorderから「JS ステップを追加する」をクリック
※ここで表示されるキーは控える必要はございません
mojikyo45_640-2.gif

⑦確認コードに「任意の6桁の数値」を入力し、「接続」をクリック
※エラーが発生しログイン失敗しますがこの時点では問題ないです
mojikyo45_640-2.gif

確認コードが無効ですのエラーが表示されたらAutify Recorderの「保存」をクリック
mojikyo45_640-2.gif

⑨「JavaScript のコードを実行する」ステップをクリックし、以下のコードを入力する
このコードではAutifyがホスティングするAPIを用い、確認コードを生成します(参考)

  • Step5で行った操作により右クリックした要素が element に代入されます
  • 今後ログインする際に利用するキーを控えるために2行目でconsole.log(secret);を実行しています
var secret = element.textContent;
console.log(secret);
var url = "https://autify-jsstep-util-apis.herokuapp.com/totp";
var xhr = new XMLHttpRequest();
var otp = null;

xhr.onerror = function() {
  throw new Error("Network Error");
};
xhr.onload = function() {
  otp = xhr.response;
};

xhr.open("POST", url, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("key=" + secret);

return otp;

⑩ステップ10の「000000と入力する」「値を指定」「他のステップから取得」の順にクリックし、入力値がJavaScript のコードを実行するとなっていることを確認する
JS3.png

⑪「保存」「今すぐ実行 Chorome / Linux」の順にクリックし、テストを実行する
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333031383934362f30323264333732642d613064352d666134382d396237332d6263333835316563633330362e706e67.png

⑫「テスト結果」クリックし、準備用シナリオが成功していることを確認する。
成功.png

準備用シナリオのテスト結果を開き、JavaScript のコードを実行するステップの「Logs:1」をクリックし、完成版シナリオで用いるキーを控える
Logs.png
key.png

Step 2.Step. 1で取得したキーを基に定期実行用の「完成版シナリオ」を作成する

完成.png

①Step. 1の①,②を行う
※シナリオ名は完成版シナリオとします

②確認コードに「任意の6桁の数値」を入力し、「検証」をクリックし、エラーが表示されることを確認した上で「保存」をクリック
保存2.png

③000000と入力するステップの直前の+をクリックし、「ステップを挿入」「JSステップ」の順にクリックする
挿入.png

④JavaScriptに「以下のコード」を入力する
※1行目のXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXはStep. 1で控えたキーに置き換えてください

var secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
var url = "https://autify-jsstep-util-apis.herokuapp.com/totp";
var xhr = new XMLHttpRequest();
var otp = null;

xhr.onerror = function() {
  throw new Error("Network Error");
};
xhr.onload = function() {
  otp = xhr.response;
};

xhr.open("POST", url, false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("key=" + secret);

return otp;

⑤「000000と入力する」「値を指定」「他のステップから取得」の順にクリックし、入力値がJavaScript のコードを実行するとなっていることを確認する
JS4.png

⑥「保存」「今すぐ実行 Chorome / Linux」の順にクリックし、テストを実行する

⑦テスト結果を確認し、成功していたら完成!
スクリーンショット 2022-12-06 13.09.41.png

おわりに

いかがでしたでしょうか?
MFAを用いたログインのテストを自動化するのは難しそうに感じてしまいますが、Autityでは簡単に出来てしまいます!
ぜひ皆様もSalesforce開発のテストにAutityをご活用ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0