Configure JSON scan settings and authentication profiles
scan-settings.json file and upload it to the Polaris web UI. Configuration options are available for the scan engine (for example, excluded URLs, attack depth, and crawl settings) and the supported authentication methods (AI-Assisted, Forms, SAML, and Selenium). The settings you specify in the file will be applied to the default scan settings.
After you create a DAST project (see Create and test DAST projects for web applications and APIs), follow these steps to customize the project's DAST profile:
Advanced DAST settings
| Setting | Description |
|---|---|
useSmartSetting |
When Smart Settings is enabled, fAST Dynamic crawls a limited section of the target web application to automatically detect several characteristics important to dynamic application security testing. These include (but are not limited to):
Based on this data, the scan engine defines a set of optimal scan settings and applies them to the Default: Note: Be aware that enabling Smart Settings will override some pre-existing scan settings, if you have modified these in the
scan-settings.json file. |
pageReadyConfig |
Configuration for "page readiness" heuristics; that is, how the scan engine determines if a page has finished loading in a browser and is ready for interaction.
Default: The |
authSettings |
Configuration for authentication.
Default: Note: See Authentication profiles for more information.
|
scanTimeout |
Maximum length of time before an incomplete scan times out. At the end of this period, the scanner will publish the partial results of the scan.
Default: |
includedPaths |
Configuration for URL paths to include in scans of the target web application.
If set, only URL paths matching the specified values are included in scans. Enter an array of regular expressions, for example:
Default: N/A |
excludedUrls |
Configuration for URL paths to exclude from scans of the target web application.
If found on a URL path, the given URLs will be excluded from scans, including active attacks. Enter an array of regular expressions, for example:
Default: |
excludedAttackUrls |
Configuration for URL paths to exclude from active attacks of the target web application.
Only applies if Perform Active Attacks is selected on the DAST project page. Default: |
excludedParameters |
An array of values where any matching parameter names (for example, query parameters, form fields, or headers) will not be attacked.
Only applies if Perform Active Attacks is selected on the DAST project page. Default: |
excludedStatusCodes |
A response with a matching status code will not be attacked.
Only applies if Perform Active Attacks is selected on the DAST project page. Default: |
excludedHosts |
List of hosts to exclude from crawling and attacking. The scan engine will never send a request to any URL on these hosts, even through the browser.
A list of regular expressions. Note: You might want to add internal services to the default list of excluded hosts, for example, application performance monitoring (APM) tools, ad servers, etc.
Default: See |
customHeaders |
Extra headers to add to all requests from the scan engine.
Default: |
customCookies |
Extra cookies to add to all requests from the scan engine.
Default: |
activeCheckers |
List of active checkers to enable in scans of the target web application. Active checkers change the values of parameters in requests to detect vulnerabilities. Reducing the amount of active checkers will speed up scans but reduce the depth and breadth of intrusive testing. See fAST Dynamic checkers for a complete list of active checker codes. Only applies if Perform Active Attacks is selected on the DAST project page. Default: See |
passiveCheckers |
List of passive checkers to enable in scans of the target web application. Passive checkers are non-intrusive. They detect vulnerabilities by passively observing web traffic. See fAST Dynamic checkers for a complete list of passive checker codes. Default: See |
crawler.formValues |
Default values used by the scan engine when crawling pages that contain forms. You can customize these form values with specific names and types of form fields used in the target web application.
Default: See |
Authentication profiles
Authentication profiles are the components of a DAST profile that handle authentication to web apps and APIs. DAST scans use authentication profiles to represent different types of users, such as unauthenticated, authenticated, or administrator.
Authentication profiles are defined in the authProfiles section of a scan settings JSON file. They support the same authentication settings as the Polaris web UI, plus advanced settings for each authentication method and settings for multi-factor authentication (MFA).
authProfiles) are not supported for DAST scans of web apps. If multiple authProfiles are specified for a web app scan, only the first one is used.authProfiles structure
authProfiles JSON object consists of the following fields: name: The name of the authentication profile (must be unique).authenticators: A group of authentication settings for the enabledloginType.loginType: The authentication method.- For Web App scans, the supported
loginTypesare:none,ai,simple,SAML,header,selenium, andchromeRecording. - For API scans, the supported
loginTypesare:none,header,queryParams,OAuth2Password,OAuth2ClientCredentials,AWSSigV4, and mTLSClientCertificate.
- For Web App scans, the supported
The structure of the authenticators object depends on the selected loginType. By default, no authentication method is set, so the loginType is none:
"authProfiles": [
{
"name": "Primary",
"authenticators": [
{
"timeoutMultiplier": 1,
"fingerprintSimilarityThreshold": 0.97,
"loginType": "none",
"retryLimit": 3,
"logoutLimit": -1,
"onStateError": "reacquire",
"settings": null
}
],
"accessTags": null
}
],
The following sections describe the individual settings for each authentication method (loginType), and provide example authentication profiles that you can customize for your own web app or API. Methods for use with API targets only are labeled with "API scans" in parentheses.
Simple
Simple authentication is most appropriate for simple username/password login forms where both username and password fields are on a single page.
| Setting | Optional/Required | Description |
|---|---|---|
loginURL |
Required | URL of the target login page. |
steps |
Required | Specifies one or more login steps for the target web application. |
inputs |
Required | Specifies the input identifiers and values for a specified login step. For example: |
formCSSSelector |
Optional | A CSS selector for the login form if there is more than one form on the login page. A CSS selector can be generated using your browser's developer tools by highlighting the <form> HTML element and choosing Copy Selector from the context menu. For example:
|
formValues |
Optional | Specifies the input field names and values for interacting with the target login form. You can specify one or more of the following:
|
headers |
Optional | An array of Name,Value pairs (note the capitalization). For example:
|
cookies |
Optional | An array of Cookie objects as Name,Value pairs. Other cookie properties, such as Path or Expires, are supported too. For example:
|
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "simple",
"settings": {
"loginURL": "https://example.com/login",
"steps": [
{
"formCSSSelector": "#login-form",
"inputs": [
{
"identifier": "username",
"value": "admin"
},
{
"identifier": "password",
"value": "password123"
}
]
}
]
}
}]
}]
}
SAML
Authenticate via a SAML Identity Provider (IdP) to access the target application through single-sign on (SSO).
| Setting | Optional/Required | Description |
|---|---|---|
ssoLoginURL |
Required | The URL of SAML SSO login page. |
formValues |
Optional |
Specifies the input field names and values for interacting with the target login form. You can specify one or more of the following:
|
headers |
Optional | An array of Name,Value pairs (note the capitalization). For example:
|
cookies |
Optional | An array of Cookie objects as Name,Value pairs. Other cookie properties, such as Path or Expires, are supported too. For example:
|
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"authSettings": {
"loginType": "SAML",
"settings": {
"ssoLoginURL": "https://mycompany.okta.com/app/12345",
"steps": [{
"inputs": [
{
"identifer": "username",
"value": "admin"
},
{
"identifier": "password",
"value": "password123"
}
]
}]
}
}
}]
}]
}
Selenium
Authenticate using a Selenium .cfg or .side file, generated from the Selenium IDE browser extension.
| Setting | Optional/Required | Description |
|---|---|---|
sideFileContents |
Optional | The ID of the Selenium .cfg file. Alternatively, use the sideFilePath parameter to point to a .side file saved on your machine, e.g. "sideFilePath": "C:\\Users\\user-name\\site-login.side"
|
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "selenium",
"settings": {
"sideFileContents": {
"id": "f2d3d670-62f4-476d-bec8-6ffdb4508725",
...
}
}
}]
}]
}
Chrome Recording
Authenticate using a Chrome recording JSON file, generated with the Chrome DevTools Recorder. Chrome recordings can handle complex, multi-step authentication flows, including those with dynamic elements.
Chrome recording authentication is configured in the scan-settings.json file only.
| Setting | Optional/Required | Description |
|---|---|---|
chromeRecordingContents |
Required | The contents of the Chrome recording file, in JSON format. |
For example:
{
"version": "0.25",
"authProfiles": [
{
"name": "<PROFILE_NAME>",
"authenticators": [
{
"loginType": "chromeRecording",
"settings": {
"chromeRecordingContents": {
"title": "Recording 8/22/2025 at 1:04:54 PM",
"steps": [...]
}
}
}
]
}
]
}
AI-Assisted
Automatically detect the login process using AI-Assisted authentication. See Use AI-Assisted Authentication for more information about this fAST Dynamic feature.
| Setting | Optional / Required | Description |
|---|---|---|
loginURL |
Required | The URL of the login page of the target web application to scan. This must be accessible to the fAST Dynamic DAST scanner. |
username |
Required | The username used to log in. |
password |
Required | The password used to log in. |
otpEmail |
Optional | The Black Duck MFA email address associated with the DAST project, in the format <project-ID>@mfa.dast.blackduck.com. |
otpTimeSecret |
Optional | The TOTP Secret Key that is configured in your MFA provider. |
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "ai",
"settings": {
"loginURL": "https://myapp.blackduck.com",
"username": "user",
"password": "pass"
"otpEmail": "<project_id>@mfa.dast.blackduck.com",
"otpTimeSecret": "PJ4N90FWMDMSOQEMNC8FDK"
}
}]
}]
}
Header (API scans)
Authenticate by passing an auth header containing a bearer token, for example.
| Setting | Optional / Required | Description |
|---|---|---|
headers |
Required | An array of authentication headers. |
name |
Required | Header name (string). |
value |
Required | Header value (string). |
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "header",
"settings": {
"headers": [
{
"name": "Authorization",
"value": "Bearer 1234"
}
]
}
}]
}]
}
Query Parameters (API scans)
Authenticate by providing credentials as query parameters.
| Setting | Optional/Required | Description |
|---|---|---|
queryParams |
Required | An array of query parameters. |
name |
Required | Query parameter name (string). |
value |
Required | Query parameter value (string). |
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "queryParams",
"settings": {
"queryParams": [
{
"name": "token",
"value": "12345"
}
]
}
}]
}]
}
OAuth 2.0 Password (API scans)
Authenticate by using an OAuth 2.0 password flow (see the OAuth 2.0 specification).
| Setting | Optional/Required | Description |
|---|---|---|
username |
Required | Username used to log in (string). |
password |
Required | Password used to log in (string). |
clientID |
Required | ID of the OAuth Client. |
clientSecret |
Required | The client secret of the application. |
site |
Required | URL of the API that fAST Dynamic will authenticate to. |
tokenPath |
Required | Path to the access token from the Authorization server. |
queryParams |
Required | Array of query parameters. |
bodyParams |
Required | Array of body parameters. |
headerParams |
Required | Array of header parameters. |
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "OAuth2Password",
"settings": {
"username": "user1",
"password": "pass1234",
"clientID": "mRkZGFjM",
"clientSecret": "DFsdafz",
"site": "https://api.example.com",
"tokenPath": "/oauth/token",
"queryParams": [{"key": "query1", "value": "example"}],
"bodyParams": [{"key": "body1", "value": "example"}],
"headerParams": [{"key": "header1", "value": "example"}]
}
}]
}]
}
OAuth 2.0 Client Credentials (API scans)
Authenticate using an OAuth 2.0 Client Credentials flow (see the OAuth 2.0 specification).
| Setting | Optional/Required | Description |
|---|---|---|
clientID |
Required | ID of the OAuth Client (string). |
clientSecret |
Required | The OAuth Client secret, e.g. password. |
site |
Required | URL of the API that fAST Dynamic will authenticate to. |
tokenPath |
Required | Path to the access token from the Authorization Server. |
queryParams |
Required | Array of query parameters. |
bodyParams |
Required | Array of body parameters. |
headerParams |
Required | Array of header parameters. |
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "OAuth2ClientCredentials",
"settings": {
"clientID": "mRkZGFjM",
"clientSecret" : "DFsdafz",
"site" : "https://example.com",
"tokenPath" : "/oauth/token",
"queryParams" : [{"key": "query1", "value": "example"}],
"bodyParams" : [{"key": "body1", "value": "example"}],
"headerParams" : [{"key": "header1", "value": "example"}]
}
}]
}]
}
AWS Signature v4 (API scans)
Authenticate using AWS Sig v4 (see AWS Signature Version 4 for API requests).
| Setting | Optional/Required | Description |
|---|---|---|
accessKey |
Required | Access key ID. |
serviceKey |
Required | Service key ID. |
region |
Required | AWS region, e.g. us-east-1. |
service |
Required | AWS service, e.g. s3, iam. |
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "AWSSigV4",
"settings": {
"accessKey": "AKIDEXAMPLE",
"serviceKey": "mRkZGFjMASdsfOFKmkls",
"region": "us-east-1",
"service": "s3"
}
}]
}]
}
mTLS (Client Certificate) (API scans)
Authenticate using mutual TLS (mTLS) Client Certificate.
| Setting | Optional/Required | Description |
|---|---|---|
certificate |
Required | TLS certificate from the server. |
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"authenticators": [{
"loginType": "ClientCertificate",
"settings": {
"certificate": "-----BEGIN CERTIFICATE-----\nMIIBvDCCAWOgAwIBAgIQAmlgHhAhCL5+jJeTakHVHTAKBggqhkjOPQQDAjAzMTEw\nLwYDVQQDEyhDYWRkeSBMb2NhbCBBdXRob3JpdHkgLSBFQ0MgSW50ZXJtZWRpYXRl\nMB4XDTI1MDEwODAxMDEwM1oXDTI1MDEwODEzMDEwM1owADBZMBMGByqGSM49AgEG\nCCqGSM49AwEHA0IABI/V1KHWk3+fFdiq5ke/lAh2QMuoNnCcMWx6Tkga0oLwKBR+\nyn2JI0kg2gtc8gdmtC9/aY5pLgo5cU/Tl9Y28SijgYswgYgwDgYEVR0PAQH/BAQD\nAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUqwzL\nnbPig1zy6ytRVIJ4kK7gAiEwHwYDVR0jBBgwFoAUd1CbI6wESNJ+XhY3UjlXpmNh\nkDowFwYDVR0RAQH/BA0wC4IJbG9jYWxob3N0MAoGCCqGSM49BAMCD0cAMEQCIDoT\n2X1yLe+QYt4aZ2TbqAIQ+K1NmfQJaXm8gyZT9skhAiACnmOKlqb0klHoAuJ4f/sL\nxdveQuVr4d4QEDe0eebt2w==\n-----END CERTIFICATE-----", "privateKey": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIPZRJKfTWNYJNWvX9iXoQ0PnjEdBhPDXHHjb6ZrrYfGmoAoGCCqGSM49\nAwEHoUQDQgAEj9XUodaTf58V2KrmR7+UCHZAy6g2cJwxbHpOSBrSgvAoFH7KfYkj\nSSDaC1zA52a0L39pjmkuCjlxT9OX1jbxKA==\n-----END EC PRIVATE KEY-----"
}
}]
}]
}
Authentication profiles for MFA
fAST Dynamic can authenticate to web application targets that implement multi-factor authentication (MFA) security measures. Two types of MFA are supported:
- Email MFA: Where a one-time code is sent to a preconfigured email address on attempted login and then entered into an input field on the login page.
- Time-based One-Time Password (TOTP) MFA: Where a time-based code is generated using a pre-shared secret key and entered into an input field on the login page.
Note: The TOTP implementation supports standard TOTP parameters (SHA-1 hash algorithm, 6-digit codes, 30-second time step).
Currently, MFA can be configured through a scan settings JSON file within the "Simple Forms" or the "Selenium/Chrome recordings" authentication types only. Examples of these are given below. Note that the example for AI-Assisted Authentication, above, also includes MFA configuration.
Email and TOTP MFA with Simple Authentication
| Setting | Optional/Required | Description |
|---|---|---|
loginURL |
Required | URL of the target application's login page. |
steps.inputs |
Required | A series of steps that must be performed to access the application (with required inputs at each stage). In the example JSON below this table, two steps are used.
The first step in the example below includes identifiers for username and password fields in the target application, along with the username and password used to access the application. You can identify input fields (username, password, and MFA input fields) using HTML IDs, names, or type attributes. The second step in the example below includes the identifier for the MFA code input field that appears after the initial login, along with a project-specific email address that receives MFA codes. Each DAST project is assigned a unique Black Duck MFA email address to receive one-time codes from MFA providers. You must configure the target web application to send emails to the correct email address for the DAST project. This is in the following format:
Note: The
<dast-project-id> is visible in the browser address bar when viewing the project in Polaris (after /project/ in the URL).
|
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"accessTags": [],
"authenticators": [{
"loginType": "simple",
"settings": {
"loginURL": "https://example.com/login",
"steps": [
{
"inputs": [
{
"identifier": "username",
"value": "admin"
},
{
"identifier": "password",
"value": "password123"
}
]
},
{
"inputs": [{
"identifier": "email-mfa-field",
"value": "dast-project-id@mfa.dast.blackduck.com",
"valueType": "email-totp"
}]
}
]
}
}]
}],
| Setting | Optional/Required | Description |
|---|---|---|
loginURL |
Required | URL of the target application's login page. |
steps.inputs |
Required | A series of steps that must be performed to access the application (with required inputs at each stage). In the example JSON below this table, two steps are used.
The first step in the example below includes identifiers for username and password fields in the target application, along with the username and password used to access the application. You can identify input fields (username, password, and MFA input fields) using HTML IDs, names, or type attributes. The second step in the example below includes the identifier for the TOTP MFA code input field that appears after the initial login, along with the secret key used to generate TOTP codes. The
|
For example:
{
"version": "0.25",
"authProfiles": [{
"name": "<PROFILE_NAME>",
"accessTags": [],
"authenticators": [{
"loginType": "simple",
"settings": {
"loginURL": "https://example.com/login",
"steps": [
{
"formCSSSelector": "#login-form",
"inputs": [
{
"identifier": "username",
"value": "admin"
},
{
"identifier": "password",
"value": "password123"
}
]
},
{
"inputs": [{
"identifier": "otp-id",
"value": "DCXPW31KDM1ISCX",
"valueType": "totp"
}]
}
]
}
}]
}],
TOTP MFA with Selenium authentication
This example configuration shows Selenium authentication, including a step for MFA using a time-based one-time password (TOTP). To use this method, you must manually replace the value field with the string *BD-TOTP* and add the TOTP secret to the comment field.
{
"id": "6c185925-9fe5-499a-bb77-6e48e94f1a30",
"comment": "ISJSXMU4PRB6EGK5OL7V44J4OT4D2BJK",
"command": "type",
"target": "id=foo",
"targets": [],
"value": "*BD-TOTP*"
}
TOTP MFA with Chrome Recording authentication
This example configuration shows Chrome Recording authentication, including a step for MFA using a TOTP. To use this method, you must manually replace the type field with *BD-TOTP* and add a new field named secret containing the TOTP secret.
{
"type": "*BD-TOTP*",
"secret": "JBSWY3DPEHPK3PXP",
"selectors": [
"#totp-code"
],
"target": "main"
}
Email MFA with Selenium authentication
This example configuration shows Selenium authentication, including a step for email MFA. To use this method, you must manually replace the value field with *BD-EMAIL-MFA*. In the comment field, add the email address that the one-time code will be sent to, e.g. dast-project-id@mfa.dast.blackduck.com.
{
"command": "type",
"comment": "dast-project-id@mfa.dast.blackduck.com",
"id": "ec9e5a83-bfc4-4ead-9078-105ebb8d17da",
"target": "id=code",
"targets": [
[
"id=code",
"id"
],
[
"name=code",
"name"
],
[
"css=#code",
"css:finder"
],
[
"xpath=//input[@id='code']",
"xpath:attributes"
],
[
"xpath=//form[@id='mfaForm']/div/input",
"xpath:idRelative"
],
[
"xpath=//input",
"xpath:position"
]
],
"value": "*BD-EMAIL-MFA*"
},
Email MFA with Chrome Recording authentication
This example configuration shows Chrome Recording authentication, including a step for email MFA. To use this method, you must manually replace the type field from change to *BD-EMAIL-MFA*. Add an address field and enter the email address that the one-time code will be sent to.
#...
{
"type": "*BD-EMAIL-MFA*",
"address": "test-user-2@mfa.dev.dast.blackduck.com",
"selectors": [
[
"aria/Verification Code:"
],
[
"#code"
],
[
"xpath///*[@id=\"code\"]"
],
[
"pierce/#code"
]
],
"target": "main"
},