--- title: "Configure conditions" slug: "configure-conditions-v6-5" description: "Control network resource access with dynamic criteria and user actions. Learn to configure conditions and utilize advanced scripting for security." updated: 2025-12-04T16:40:33Z published: 2025-12-04T16:40:33Z canonical: "support.appgate.com/configure-conditions-v6-5" --- > ## Documentation Index > Fetch the complete documentation index at: https://support.appgate.com/llms.txt > Use this file to discover all available pages before exploring further. # Configure conditions Defines criteria and user actions used to control when the network resources in can be accessed. You may wish to review the [Before you start](/v1/docs/conditions). When you're ready to Configure Conditions, complete the fields in the form. ## Actions The Actions menu allows you to [test access](/v1/docs/checking-access-rights) based on the settings below. ## Add/Edit Condition ### Access Criteria ***Setting Modes*** List mode provides three options to configure the criteria that need to be true in order for access in an Entitlement to be allowed. Selecting a claim will automatically display the relevant parameters. *Switch to Script Mode* > [!NOTE] > **NOTE** > > Script mode is available for very advanced use cases. However this may break compatibility with the other 3 modes. *Script mode* By using the script editor it is possible to edit existing expressions or to create your own. The JavaScript engine is run in a sandbox preventing any file system access, however it is possible to make external calls using: HTTP PUT HTTP POST HTTP GET HTTP DELETE This would for instance allow a value to be passed to an external system for validation as part of the expression. Refer to [access criteria script](/v1/docs/access-control-modes#access-criteria-scripts) for more information on scripting. ***Criteria*** ***Combining Mode*** Criteria expressions have three different combining modes (without using scripts): - - a logical AND of different criteria needs to equate to true - - a logical OR of different criteria needs to equate to true - - a simple Boolean expression comprising a number of different criteria needs to equate to true [Condition based access](/v1/docs/access-control-modes) provides more information and examples ***Criteria*** By selecting criteria that include dynamic Claims (that change during a session), you can create access criteria expressions that enable Appgate SDP to respond to changes in a timely manner. For example, clientSrcIP claim can be used to remove access to protected resources when the user leaves the office to work from home. Conditions can include multiple criteria, so you will need to decide how to combine the access criteria. There is also a Script mode for advanced use cases. ***User response claims*** At the top of the pick list are three user response claims: *Provided MFA*, *Provided Reason*, or *Password*. Unlike all other claims, which are hard-coded or pre-configured (for instance within the identity provider), user interaction names are defined within the Condition itself. When Configured with a claim suffix (name) and time period (if required) then a new user response claim (using that name) is automatically created. | Type | Claim Suffix (Name) | Minutes (Time window) | Internal Claim Name | Criteria Check Method Used | | --- | --- | --- | --- | --- | | | The claim name that refers to this occurrence of the user interaction | Time window during which the claim shall evaluate to true | The internal user response claim generated from the given claim suffix (name) | Matching criteria check method used to evaluate if the claim is true or false | | Provided MFA | i.e., general | i.e., 60 | user.otp.general | claims.user.hasOtp("general", 60) | | Retyped Password | i.e., finance | i.e., 60 | user.password.finance | claims.user.hasPassword("finance", 60) | | Provided Reason | i.e., github | n/a | device.reason.github | claims.device.hasReason("github") | [User response claims](/v1/docs/applying-access-controls-user-interactions) gives more details and examples about the built in check method used and how this ties into the naming of these types of claims. ***Other claim types*** As you build expression you will be prompted for the necessary parameters according to the claim selected. *User claims example* **"groups match"**: use this option to check for membership of an LDAP group. The match operator uses exact match; while testing the LDAP "groups" claim with contains operator, you need to provide the whole FQDN of the group name. For example: `CN=group3,OU=sweden,DC=cryptzone,DC=com", "CN=group4,OU=sweden,DC=cryptzone,DC=com` We do not recommend using partial matches for security reasons but you can do this in the Javascript editor. You can flatten "groups" claim to a single string: `var all_groups = claims.users.groups.toString()` then check the group name `var match= all_group.indexOf('CN=Developers,') > -1;` Note the trailing comma in the example, make sure to include trailing comma for security reasons so there are no un-intentional matches like `CN=Developers Inactive, OU= vs CN=Developers, OU=..` *Device claims example* "**os.family**": use this option to include devices with a particular OS e.g. windows. "**isFirewallEnabled**": use this option to check for a device firewall > [!NOTE] > NOTE > > Any device claims or on-demand claims which return yes/no, true/false, etc will be evaluated as a string. Any values that should NOT be treated as a string need to be handled using