Challenge Connector
The Challenge connector allows you to branch your PingOne DaVinci flow to handle an external event, such as a multi-factor authentication (MFA) step.
By using the Challenge connector, you can show the user a message and “waiting” indicator in the main flow while a secondary flow interacts with the user elsewhere. When the secondary flow is done, the Challenge connector can trigger the main flow to continue.
The connector works by creating, updating, or checking the status of a “challenge” in your flow. Challenges are special variables that can be created by several connectors, including the Challenge connector, Flow Conductor and some authentication and verification connectors.
Other connectors, such as the HTTP connector, can pause the flow until the status of a challenge changes.
The Challenge connector updates the status of a challenge, which triggers the waiting HTTP connector to continue the flow.
Setup
Setting up the Challenge connector
In DaVinci, add a Challenge connection. For help, see Adding a connector.
This connector doesn’t have a configuration at the environment level. You configure it in your flow instead.
Using the connector in a flow
The Challenge connector supports a variety of use cases, such as:
Building an MFA sign-on flow
In this example, we want our user to complete an MFA challenge after entering their username and password. We’ll show an HTML message in the browser telling the user to complete MFA. At the same time, we’ll start the MFA connector in a secondary flow, which pushes a notification to the user’s phone. When the user completes MFA on their phone, our secondary flow triggers the HTML message to continue the main flow.
Before you start, you’ll need:
-
A sign-on form. You can create one with the HTTP connector.
-
An MFA connector, such as the PingOne MFA connector.
-
Create the challenge:
-
In your flow, following the sign-on form, add the Challenge connector and select the Add Transaction Status capability. Select the new node in your flow.
-
Turn off Is challenge record complete.
-
In the Challenge Status list, select started.
-
-
Show a page with a “waiting” animation until the user clicks the link:
-
Following your Add Transaction Status node, add an HTTP connector and select the Custom HTML Message capability. Select the new node in your flow.
-
Build your message in the HTML Template field. To show a “waiting” animation on the page, click {} and select the
skpolling
variable from SK-Component. -
In the Challenge field, click {} and select the
challenge
variable from your Add Transaction Status node. Turn on Enable Polling.This pauses the main flow on this page until the challenge status changes. We’ll update the challenge status in the secondary flow.
Any change in the challenge status, regardless of the value, will cause this flow to continue.
-
-
Build a secondary flow that send the MFA push and updates the challenge status:
-
Following your Add Transaction Status node, parallel to your Custom HTML Template node, add an MFA node. In our example, we use the PingOne MFA connector. You can use your MFA service of choice or link to a subflow using the Flow conductor connector.
-
Configure your MFA node by following its documentation. If you are using the PingOne MFA connector, see PingOne MFA.
-
Following your MFA node, add a Challenge connector and select the Update Transaction Status capability.
-
In the Challenge field, click {} and select the
challenge
variable from your Add Transaction Status node. -
Turn on Is challenge record complete. This indicates to DaVinci that our Custom HTML Template can stop polling for the status of this challenge.
-
In the Challenge Status list, select approved.
-
-
Following your Custom HTML Template “waiting” page in the main flow, continue building the rest of your flow. For example, you could direct the user to their user account self-service portal.
-
Capabilities
Add Transaction Status
Add the transaction status challenge to the flow.
Show details
- Details
-
- Properties
- isChallengeComplete
toggleSwitch
- challengeStatus
dropdownWithCreate
- Challenge Timeout in seconds (default 300secs)
textField
- updatedByFlowId
textField
- claimsNameValuePairs
selectNameValueListColumn
- Input Schema
- default
object
- parameters
object
additionalProperties: true
- properties
object
- challengeStatus
string
- updatedByFlowId
string
- Output Schema
- output
object
- challenge
string
- challengeStatus
string
- updateByFlowId
string
Update Transaction Status
Update the transaction status challenge in the flow.
Show details
- Details
-
- Properties
- Challenge
textField
- isChallengeComplete
toggleSwitch
- challengeStatus
dropdownWithCreate
- updatedByFlowId
textField
- claimsNameValuePairs
selectNameValueListColumn
- Input Schema
- default
object
- parameters
object
additionalProperties: true
- properties
object
- challenge
string
minLength: 1
maxLength: 100
-
Unique string to identify the Transaction
- challengeStatus
string
minLength: 1
maxLength: 50
-
Current status of the Transaction
- updatedByFlowId
string
minLength: 1
maxLength: 100
-
Id of the flow updating the challenge
- Output Schema
- output
object
- challenge
string
- challengeStatus
string
- updateByFlowId
string
Get Transaction Status
Retrieve transaction status information in the flow.
Show details
- Details
-
- Properties
- Challenge
textField
- Input Schema
- default
object
- parameters
object
- properties
object
- challenge
string
minLength: 1
maxLength: 100
-
Unique string to identify the Transaction
- Output Schema
- output
object
- challenge
string
- challengeStatus
string
- updateByFlowId
string
Poll for Transaction Status
Poll for transaction status information in the flow.
Show details
- Details
-
- Properties
- Challenge
textField
- pollInterval
textField
- pollRetries
textField
- Input Schema
- default
object
- parameters
object
additionalProperties: true
- properties
object
- challenge
string
minLength: 1
maxLength: 100
-
Unique string to identify the Transaction
- pollInterval
number
min: 100
-
Poll Interval in ms
- pollRetries
number
-
Number of Poll Retries
- Output Schema
- output
object
- challenge
string
- challengeStatus
string
- updateByFlowId
string