ブラウザベース認証

このアドオンは、対象Webサイトへのログインにブラウザを使用する新しい認証方法を追加します。

この認証方法は、認証を実行するためにログインURLとユーザー認証情報を必要とします。 デフォルトでは、ユーザー名フィールドとパスワードフィールドに適したフィールドを、同じページまたは複数のページ (例: ユーザー名入力後にパスワードフィールドが表示される場合) で自動的に検出しようとします。

計画では、この認証方法を最も一般的なログインフォーマットすべてに対応するよう継続的に強化する予定です。 対象アプリケーションのログインページで動作しない場合は、可能な限り多くの詳細を提供して、ZAPユーザーグループ経由でZAPチームに通知してください。

この方法は、Firefox限定でHTTP Basic認証もサポートします (Seleniumの制限による)。

認証ステップ

認証方法が適したフィールドを見つけられない場合、または追加のステップが必要な場合、ユーザーが手動で指定できます。 以下のステップがサポートされています:
名前タイプ説明
自動ステップAUTO_STEPS認証方法がデフォルトで実行するステップ、すなわち必要なフィールドの特定と入力 (すでに指定されていない場合) を実行することを示します。 これは、認証方法がフィールドを見つけ送信できるが、他の必要なステップが前または後に発生する場合に便利です。
要素クリックCLICKWeb要素をクリックします。例: ログインフォームにアクセスしたり、ポップアップを閉じたりする場合。
カスタムフィールドの入力CUSTOM_FIELD指定された値でカスタムフィールドを入力します。例: ログインフォームでレルムまたは組織部門を選択する場合。
パスワードフィールドの入力PASSWORD適切なフィールドが自動的に特定されなかった場合に、パスワードフィールドに入力します。
TOTPフィールドの入力TOTP_FIELDTOTPフィールドに入力します。
ユーザー名フィールドの入力USERNAME適切なフィールドが自動的に特定されなかった場合に、ユーザー名フィールドに入力します。
Escapeキーの送信ESCAPEWeb要素にEscapeキーを送信します。例: ポップアップを閉じる場合。
リターンキーの送信RETURNWeb要素にリターンキーを送信します。例: ログインフォームを送信する場合。
タイムアウトまで待機WAIT指定されたタイムアウトまで待機します。
各ステップは、指定された順序で順次実行されます。 Web要素に作用するステップは、CSSセレクタまたはXPathで識別する必要があります。これらは、例えばブラウザの開発者ツールから取得可能です。 これらのステップにはタイムアウトがあり、ログインページの読み込みに時間がかかる場合に、指定されたミリ秒数までWeb要素の表示と操作可能になるのを待機します。 CUSTOM_FIELDPASSWORD、および USERNAME ステップは、対応するフィールドの既存値をクリアするため、入力したい完全な値を指定する必要があります。

セッション識別

セッショントークンを含むレスポンスは、ログイン後の最初のレスポンスで以下のいずれかを含むものとして識別されます:

自動化フレームワーク

ブラウザベース認証は、自動化フレームワークプランの環境セクションで以下のように設定できます:
      authentication:
        method: "browser"
        parameters:
          loginPageUrl:                # 文字列、ログインページのURL、必須
          loginPageWait:               # 整数、ログインフォーム送信後の待機時間(秒)、デフォルト: 5
          stepDelay:                   # 整数、各ステップ間の待機時間(秒)、デフォルト: 0
          browserId:                   # 文字列、使用するブラウザID、デフォルト: firefox-headless
          diagnostics:                 # ブール値、認証中の診断データの記録を有効化、デフォルト: false。 
          steps:                       # カスタムステップのリスト。
          - description:               # 文字列、ステップの説明。
            type:                      # ステップのタイプ、AUTO_STEPS, CLICK, CUSTOM_FIELD, ESCAPE, PASSWORD, RETURN, TOTP_FIELD, USERNAME, WAIT のいずれか
            cssSelector:               # 文字列、Web要素のCSSセレクタ
            xpath:                     # 文字列、Web要素のXPath
            value:                     # 文字列、Web要素に入力する値
            timeout:                   # 整数、Web要素の待機ミリ秒数、デフォルト: 1000 

診断情報の詳細については、認証レポートを参照してください。

TOTPデータはユーザー認証情報の下に定義されます:

      credentials:
        username: …
        password: …
        totp:
          secret:          # 文字列、シークレット
          period:          # 整数、期間 デフォルト: 30 
          digits:          # 整数、桁数 デフォルト: 6 
          algorithm:       # 文字列、アルゴリズム デフォルト: SHA1

AJAXスパイダー統合

AJAXスパイダーは、ブラウザベース認証を使用するコンテキストでユーザーが指定されている場合、自動的にログインします。

この機能は、以下に詳述するSelenium統合を使用するため、手動で起動されたブラウザも、AJAXスパイダーがブラウザベース認証を使用した認証済みスキャンを実行している場合にログインされます。

Selenium統合

ZAPが起動するすべてのブラウザを、コンテキストで設定された詳細を使用して最初にログインするよう設定できます。 これはデフォルトで無効です。

この機能は、以下の静的メソッドで制御でき、AJAXスパイダーで使用され、スクリプトからも呼び出せます。

org.zaproxy.addon.authhelper.AuthUtils.enableBrowserAuthentication(Context context, String userName)
このメソッドは、ブラウザが起動されるたびに、指定されたコンテキストとユーザーに対してブラウザ認証を有効にします。 コンテキストがブラウザベース認証用に設定されていないか、ユーザーが見つからない場合に例外が発生します。
org.zaproxy.addon.authhelper.AuthUtils.enableBrowserAuthentication()
このメソッドは、ブラウザ起動時にブラウザ認証を有効化します。 ブラウザベース認証用に設定された有効なユーザーのコンテキストが選択されます。
org.zaproxy.addon.authhelper.AuthUtils.disableBrowserAuthentication()
このメソッドは、ブラウザ起動時のブラウザ認証を無効化します。

コアの制限により:

これらの制限は将来のリリースで解決される予定です。

最新のコード: BrowserBasedAuthenticationMethodType.java