Docs » 高度なテスト設定 » 認証

認証 🔗

Syntheticsテストでは、以下の認証方法を設定に利用可能です:

テストタイプ

認証メソッド

ブラウザ

HTMLログインフォームによる基本認証

HTTPヘッダーによる基本認証

SMSによる多要素認証

メールによる多要素認証

SSOとActive Directoryによる多要素認証

TOTPによる多要素認証

アップタイム

なし

API

APIリクエストヘッダーによる基本認証

HTMLログインフォームによる基本認証 🔗

注釈

この認証方法は、ブラウザテストにのみ適用されます。

テスト対象がユーザー名とパスワードを入力するためのHTMLフォームを提供している場合は、ブラウザテストを以下のように設定します。

HTMLフォームを使った基本認証による合成テストの設定方法を示すスクリーンショット。
  1. このテストターゲットのユーザー名とパスワードのグローバル変数を作成します。ベストプラクティスは、パスワード用に作成したグローバル変数を隠すことです。詳細は グローバル変数 を参照してください。

  2. ブラウザテストの設定ページで、Simple トグルを選択します。

  3. Edit steps or synthetic transactions を選択します。

  4. Fill in field というタイプのステップを追加し、以下のように設定します:

    1. Selector に、ターゲットページのユーザー名フィールドのID、名前、XPath、CSS、リンク、またはJSパスを入力します。Chromeのエレメントセレクターの詳細については、Chrome DevTools を参照してください。

    2. Value には、ユーザー名を格納したグローバル変数名を、env.を先頭につけて二重中括弧で囲んで入力します。例: {{env.test1_username}}

  5. Fill in field というタイプのステップを追加し、以下のように設定します:

    1. Selector に、対象ページのパスワードフィールドのIDを入力します。

    2. Value には、パスワードを格納したグローバル変数名を、env.を先頭につけて二重中括弧で囲んで入力します。例えば、{{env.test1_password}}

  6. Click というタイプのステップを追加し、以下のように設定します:

    1. Selector に、対象ページのログインボタンのIDを入力します。

    2. (オプション) Wait for navigation**を待機するミリ秒数に設定します。

  7. ログインが成功したことを確認するために、Assert text present というタイプのステップを追加し、以下のように設定します:

    1. Text には、ログインが成功した場合にのみテスト対象ページに表示される文字列を入力します。

    2. (オプション)ページが確実にロードされるように、Wait for up to をミリ秒単位で十分に大きな値に設定します。

  8. Submit を選択します。

ログインが機能していることを確認するには、Try now を選択します。結果が出るまでしばらく時間がかかる場合があります。Try now result ペインには、ターゲットページでテストがナビゲートした各画面と、メッセージ Success が表示されます。

HTTPヘッダーによる基本認証 🔗

注釈

この認証方法は、ブラウザテストにのみ適用されます。

テスト対象がHTTPヘッダーにログイン認証情報が含まれることを期待している場合、ブラウザテストを以下のように設定します。

  1. このテストターゲットのユーザー名とパスワードのグローバル変数を作成します。ベストプラクティスは、パスワード用に作成したグローバル変数を隠すことです。詳細は グローバル変数 を参照してください。

  2. ブラウザテストの設定ページで、Advanced トグルを選択します。

  3. Security セクションに下にスクロールします。

  4. Authentication の行で、以下のように値を設定します:

    1. 左のフィールド(ヒントのテキスト Username )に、ターゲットページのユーザー名を入力します。

    2. 右側のフィールドで、このターゲットページのパスワードを格納したグローバル変数の名前を、env. を先頭に付け、二重中括弧で囲んで入力します。例: {{env.test1_password}}。使用可能なグローバル変数のリストを表示するには、右側のペインを展開します。

  5. ブラウザテストの設定ページで、Simple トグルを選択します。

  6. Edit steps or synthetic transactions を選択します。

  7. Go to url というタイプのステップを追加し、URL にターゲットの認証ページのURLを入力します。

  8. ログインが成功したことを確認するために、Assert text present というタイプのステップを追加し、以下のように設定します:

    1. Text には、ログインが成功した場合にのみテスト対象ページに表示される文字列を入力します。

    2. (オプション)ページが確実にロードされるように、Wait for up to をミリ秒単位で十分に大きな値に設定します。

  9. Submit を選択します。

ログインが機能していることを確認するには、Try now を選択します。結果が出るまでしばらく時間がかかる場合があります。Try now result ペインには、ターゲットページでテストがナビゲートした各画面と、メッセージ Success が表示されます。

APIリクエストヘッダーによる基本認証 🔗

注釈

この認証方法はAPIテストにのみ適用されます。以下の手順は、」Basic auth」 をサポートするターゲット、つまり curl -G https://api.twilio.com/2010-04-01/Accounts.json -u <YOUR_ACCOUNT_SID>:<YOUR_AUTH_TOKEN> のようなAPIメソッドに適用されます。ベアラートークンをサポートするターゲットに対しては、これらの手順を変更することができます。

テスト対象がAPIリクエストヘッダーにログイン認証情報が含まれることを期待している場合、ブラウザテストを以下のように設定します。

APIリクエストヘッダーによる基本認証で合成テストをセットアップする方法を示すスクリーンショット。
  1. テスト対象のユーザー名とパスワードの組み合わせをbase64エンコードした文字列を取得します。base64エンコードされた文字列を取得する方法はいくつかあります。例:

    • ブラウザのコンソールからJavaScript関数btoaを実行します: btoa("myusername:mypassword")

    • Linuxのターミナルでこのコマンドを実行します: echo -n 'myusername:mypassword' | base64

  2. base64値をconcealedグローバル変数に格納します。詳細は グローバル変数 を参照してください。

  3. APIテストの設定ページで、テスト内の既存のリクエストを選択するか、Add requests を選択します。

  4. Request セクションを展開し、以下の情報を入力します:

    1. URL に、テストターゲットのURLを入力します。

    2. Add request header を選択します。

    3. Authorization ヘッダーを選択し、その値として、Basic という単語の後にスペースを入れ、その後にbase64エンコードされたユーザー名とパスワードを組み合わせたグローバル変数の名前を入力します。変数の先頭には env. を付け、二重中括弧で囲む必要があります。例: {{env.est1_base64_auth}}。利用可能なグローバル変数のリストを見るには、右側のペインを展開します。

  5. Submit を選択します。

ログインが機能していることを確認するには、Try now を選択します。結果が出るまでしばらく時間がかかる場合があります。Try now result ペインには、ターゲットページでテストがナビゲートした各画面と、メッセージ Success が表示されます。

SMSによる多要素認証 🔗

注釈

この認証方法は、ブラウザテストにのみ適用されます。

テスト対象が多要素認証のためにSMSを通じてワンタイムパスコード(OTP)を送信する場合、ブラウザテストはSMSメッセージからOTPを取得し、テスト対象のページの入力フィールドに入力する必要があります。これを行うには、ブラウザテストを以下のように設定します。

前提条件 🔗

  • 仮想電話番号

    SMSで認証するには、SMSでワンタイムパスコードを受信できる仮想電話番号が必要です。バーチャル電話番号を提供し、APIを通じてSMSコンテンツを提供するサービスがいくつかあります。例えば、Sinchサービス などです。このサービスを通じてメッセージを受信する方法については、the Sinch API を参照してください。

    Twilioなどの一部のサービスでは、OTPを含むSMSメッセージの着信がブロックされる場合があります。詳細については、Twilioの OTP Message Body Filtered ドキュメントを参照してください。

  • SMS通知

    認証プロセスを強化するには、GitHub のような、SMS通知を送信するサービスが必要です。

制限事項 🔗

Content-Security-Policy (CSP)の違反により、Syntheticsテスト中にアクセスできないサービスがある場合があります。このような場合の回避策は、サードパーティのサービスをサーバーに実装し、connect-src を許可するようにCSPで設定されたエンドポイントを提供することです。

  1. ブラウザテストの設定ページで、Simple トグルを選択します。

  2. Edit steps or synthetic transactions を選択します。

  3. Go to url というタイプのステップを追加し、URL にターゲットの認証ページのURLを入力します。

  4. タイプ Save return value from JavaScript のステップを追加し、code フィールドに以下のJavaScriptを貼り付けます。このスクリプトは、XMLHttpRequest を使用して指定したURLからデータを取得し、そのデータからOTPを抽出します。このOTPを otp というグローバル変数に保存するようにテストを設定します。

    注釈

    スクリプトの中で、変数urlに自分のバーチャル電話番号のSMSサービスのURLを設定します。

    function getOtp() {
      const url = "https://your-page.example.com/sms";
      var request = new XMLHttpRequest();
      request.open("GET", url, false);
      request.send();
      if (request.status == 200) {
        return parseOtp(JSON.parse(request.responseText));
      }
    return;
    }
    
    function parseOtp(jsonResponse) {
      const firstInbound = jsonResponse.inbounds[0];
      if (firstInbound && firstInbound.body) {
        // Extract the number using a regular expression
        const match = firstInbound.body.match(/\\b\\d{6}\\b/);
        if (match) {
          return match[0]; // Return the first matched number
        }
       }
       return;
    }
    return getOtp();
    
  5. Wait というタイプのステップを追加し、ミリ秒単位で待ち時間を指定します。この時間は、ターゲットが仮想電話番号にOTPコードを送信し、JavaScriptがOTPを処理するのに十分な時間である必要があります。

  6. Fill in field というタイプのステップを追加し、以下のように設定します:

    1. Selector には、ユーザーがOTPを入力するターゲットページのエレメントのIDを入力します。

    2. Value には、JavaScriptがOTPを格納したカスタム変数名を、custom.を先頭に付け、二重中括弧で囲んで入力します。例: {{custom.otp}}

    「フィールドに入力する」ステップを示すスクリーンショット。
  7. ログインが成功したことを確認するために、Assert text present というタイプのステップを追加し、以下のように設定します:

    1. Text には、ログインが成功した場合にのみテスト対象ページに表示される文字列を入力します。

    2. (オプション)ページが確実にロードされるように、Wait for up to をミリ秒単位で十分に大きな値に設定します。

  8. Submit を選択します。

ログインが機能していることを確認するには、Try now を選択します。結果が出るまでしばらく時間がかかる場合があります。Try now result ペインには、ターゲットページでテストがナビゲートした各画面と、メッセージ Success が表示されます。

メールによる多要素認証 🔗

注釈

この認証方法は、ブラウザテストにのみ適用されます。

テスト対象が多要素認証のためにメールを通じてワンタイムパスコード(OTP)を送信する場合、ブラウザテストはメールメッセージからOTPを取得し、テスト対象のページの入力フィールドに入力する必要があります。これを行うには、ブラウザテストを以下のように設定します。

前提条件 🔗

APIを通じてメールアカウントに接続し、メールを管理できるメールサービスが必要です。以下のステップでは、Nylasサービス を使用した例を紹介します。このサービスからメッセージを取得する方法の詳細については、その APIドキュメント を参照してください。

さらに、以下のステップでは、GitHub を使用して認証メールを送信することを示します。この認証メールは、認証メールからOTPを抽出するために不可欠です。

制限事項 🔗

メールサービスは、APIを介してアクセスできる必要があります。サービスによっては、Content-Security-Policy(CSP)違反により、Syntheticsテスト中にアクセスできない場合があります。このような場合は、サードパーティのサービスをサーバーに実装し、connect-srcを許可するようにCSPで設定されたエンドポイントを提供することで回避できます。

  1. ブラウザテストの設定ページで、Simple トグルを選択します。

  2. Edit steps or synthetic transactions を選択します。

  3. Go to url というタイプのステップを追加し、URL にターゲットの認証ページのURLを入力します。

  4. タイプ Save return value from JavaScript のステップを追加し、code フィールドに以下のJavaScriptを貼り付けます。このスクリプトは、XMLHttpRequest を使用して指定したURLからデータを取得し、そのデータからOTPを抽出します。このOTPを otp というカスタム変数に保存するようにテストを設定します。

    注釈

    スクリプトの中で、変数urlを自分のメール受信箱APIエンドポイントのURLに設定します。

    注釈

    Nylasサービスを利用している場合、件名やその他のパラメータで特定のテキストを検索することで、未読メールを見つけることができます。詳細については、Nylas API documentation for messages を参照してください。

    function getOtp() {
      const grantId = "<NYLAS_GRANT_ID>";
      const jwToken = "<NYLAS_API_KEY>";
      const from = "noreply@github.com";
      const subject = "Your GitHub launch code";
      const unread = "true";
      const url = "https://api.us.nylas.com/v3/grants/" + grantId + "/messages?limit=1&unread=" + unread + "from=" + from + "&subject=" + subject;
      var request = new XMLHttpRequest();
      request.open("GET", url, false);
      request.setRequestHeader('Authorization', 'Bearer ' + jwToken)
      request.send();
      if (request.status == 200) {
        return parseOtp(JSON.parse(request.responseText));
      }
      return "ERR";
    }
    
    function parseOtp(jsonResponse) {
      const firstInbound = jsonResponse. data[0];
      if (firstInbound && firstInbound.snippet) {
        // Extract the number using a regular expression
        const match = firstInbound.snippet.match(/\\b\\d{8}\\b/);
        if (match) {
          return match[0]; // Return the first matched number
        }
      }
      return "NO-OTP";
    }
    return getOtp();
    
  5. Wait というタイプのステップを追加し、ミリ秒単位で待ち時間を指定します。この時間は、ターゲットがOTPコードをメールサービスに送信し、JavaScriptがOTPを処理するのに十分な時間である必要があります。

  6. Fill in field というタイプのステップを追加し、以下のように設定します:

    1. :guilabel:Selec`torで、ユーザーがOTPを入力する必要があるターゲットページのエレメントのIDを入力します。

    2. Value には、JavaScriptがOTPを格納したカスタム変数名を、custom.を先頭に付け、二重中括弧で囲んで入力します。例: {{custom.otp}}

  7. ログインが成功したことを確認するために、Assert text present というタイプのステップを追加し、以下のように設定します:

    1. Text には、ログインが成功した場合にのみテスト対象ページに表示される文字列を入力します。

    2. (オプション)ページが確実にロードされるように、Wait for up to をミリ秒単位で十分に大きな値に設定します。

  8. Submit を選択します。

ログインが機能していることを確認するには、Try now を選択します。結果が出るまでしばらく時間がかかる場合があります。Try now result ペインには、ターゲットページでテストがナビゲートした各画面と、メッセージ Success が表示されます。

SSOとActive Directoryによる多要素認証 🔗

シングルサインオン(SSO)による認証は、基本認証 に似ています。SSOまたはActive Directory(AD)を使用するテストを作成するには、ウェブページを開き、SSO認証リンクを選択し、SSO認証に必要な情報を入力する一連のステップを設定する必要があります。このプロセス中に追加のウェブページがロードされる可能性があるため、先に進む前に各ウェブページのすべてのコンポーネントが完全にロードされたことを確認する手順を含めることが非常に重要です。

SSO認証では、追加の認証要素が必要になることがよくあります。IDプロバイダー(Google、Microsoft、Okta、Duoなど)が追加のログイン要素を義務付けていない場合、テストは以下の例で示される認証ステップだけで済む可能性があります:

SSOまたはActive Directoryで認証する合成テストの作成手順を示すスクリーンショット。

制限事項 🔗

IDプロバイダーは、メール、SMS、またはTOTPによる検証など、ログインにさまざまな追加要素を要求することがよくあります。このような場合、これらの追加ログイン要素に対応するために、ステップを修正または追加することが不可欠です。

TOTPによる多要素認証 🔗

注釈

この認証方法は、ブラウザテストにのみ適用されます。

テストターゲットに時間ベースのワンタイムパスコード(TOTP)を送信する必要がある場合は、以下のように設定します。

TOTPを生成するための秘密鍵を取得します。 🔗

秘密鍵は、テストターゲットとテスト認証アプリ(Oktaなど)の両方が、同じ一意のTOTPを生成するために使用する共有値です。この秘密鍵は次から取得できます:

  • テストターゲットのQRコード(画像)。

  • プレーンテキストの秘密鍵。QRコードをURL文字列として表示したときに、テスト対象のQRコードに埋め込まれた文字列として表示されます。例えば、QRコードが otpauth://totp/Slack:<username>@<somedomain>?secret=<long-string>&issuer=<app-name>&algorithm=SHA1&digits=6&period=30 の場合、秘密鍵は <long-string> になります。

秘密鍵をタイプTOTPのグローバル変数に保存します。 🔗

グローバル変数を作成するには2つの方法があります:

  • Splunk Synthetic Monitoringランディングページから:

    1. Splunk Synthetic Monitoringランディングページから、設定アイコンを選択し、Global variables を選択します。

    2. Create variable を選択します。

  • 既存のテストのページから:

    1. Edit test を選択します。

    2. 右側の Variables パネルを展開し、Global variables までスクロールして、Add を選択します。

Add variable ダイアログボックスで、次のように入力します:

グローバル変数の作成方法を示すスクリーンショット。
  1. Variable タイプのプルダウンメニューで、TOTP を選択します。

  2. Variable name フィールドに、変数名を入力します。この名前を使用して、テスト内で変数にアクセスします。

  3. 秘密鍵は以下のいずれかの方法で保存します:

    • QR code タブを選択し、そこにQRコード画像をドラッグします。

    • Manual input タブを選択し、QRコードから取得した <long-string> を貼り付けます。

  4. (オプション) Description フィールドに、将来の参照のために変数の目的を説明する説明を入力します。説明文は、変数を隠してその値を明らかにできない場合に特に役立ちます。

  5. (オプション) Advanced Settings を展開し、オプション設定を指定します:

    • (オプション) digits を生成されるTOTPの桁数に設定します。有効な値:4-8.デフォルト:6。

    • (オプション) TOTP expiration をTOTPの有効期間を秒単位で設定します。有効な値:10秒~90秒。デフォルト:30秒。

  6. (オプション)入力した秘密鍵を検証するには、Generate TOTP を選択します。

  7. Add を選択します。

注釈

Splunk Synthetic MonitoringはTOTP型の変数の値を自動的に隠します。

TOTPを使用するブラウザテストをセットアップする 🔗

  1. ブラウザテストの設定ページで、Simple トグルを選択します。

  2. Edit steps or synthetic transactions を選択します。

  3. Fill in field というタイプのステップを追加し、Value で、TOTP セクションまでスクロールダウンし(または検索フィールドに totp と入力し)、作成したTOTP変数の名前を選択します。この変数名を {{totp.<variable-name>}} として直接入力することもできます。

    「フィールドに入力する」ステップを示すスクリーンショット。
  4. ログインが成功したことを確認するために、Assert text present というタイプのステップを追加し、以下のように設定します:

    1. Text には、ログインが成功した場合にのみテスト対象ページに表示される文字列を入力します。

    2. (オプション)ページが確実にロードされるように、Wait for up to をミリ秒単位で十分に大きな値に設定します。

  5. Submit を選択します。

ログインが機能していることを確認するには、Try now を選択します。結果が出るまでしばらく時間がかかる場合があります。Try now result ペインには、ターゲットページでテストがナビゲートした各画面と、メッセージ Success が表示されます。

このページは 2025年04月21日 に最終更新されました。