Use conditions in PingAuthorize attributes, rules, and policies to define authorization logic
by comparing one thing to another. Conditions evaluate to either true
or
false
.
You can compare requests, attributes, constant values, and regular expressions in conditions. Conditions can also serve as targets that define when a policy or rule applies to a decision request. For example, you can target a rule so that it applies when a payment amount is greater than or equal to a payment limit.
When you define a condition, on the left side, select an attribute or request type that represents unknown or variable information to be validated. On the right side, enter known or predefined criteria in the form of an attribute, request, or constant value. This keeps logical statements consistent regardless of what’s being compared. You can drag collapsed conditions to change their order, as needed.
You can add conditions directly to resolvers and rules or define them on the Components tab of the Library as reusable named conditions.
Condition comparators
You can use the following comparators in condition comparisons.
For simplicity, the table groups logical comparator pairs together, but you can only use one comparator at a time in a condition.
Comparator | Supported data types | Description |
---|---|---|
Contains Does Not Contain |
Collection, String |
Checks whether a string or collection contains, or doesn’t contain, another string. Use this comparator when you know part of a value that you want to check. Note:
Matches for strings can differ from matches for collections.
For example, the string |
Contains Claim Pair Does Not Contain Claim Pair |
String |
Add defense in depth by validating token claims as part of the authorization layer.
Checks whether a To create a comparison:
To check a multivalued claim, create a comparator for each value you want to check.
Multivalued |
Ends With Does Not End With |
String |
Checks whether a string ends with, or doesn’t end with, another string. |
Equals Does Not Equal |
Boolean, Collection, Date, Date Time, Duration, JSON, Number, Period, String, Time, XML, Zoned Date Time |
Checks whether two values are equal or not equal. |
Greater Than Less Than |
Boolean, Date, Date Time, Duration, Number, String, Time, Zoned Date Time |
Checks whether a value is greater than, or less than, another value. |
Greater Than Or Equal Less Than Or Equal |
Boolean, Date, Date Time, Duration, Number, String, Time, Zoned Date Time |
Checks whether a value is greater than or equal to, or less than or equal to, another value. |
Has Valid Signature For JWKS Has Invalid Signature For JWKS |
String, JSON |
Add defense in depth by validating tokens as part of the authorization layer. Checks the following for a JWT:
A valid token must have a verified signature and not be expired. Note:
Only RSA-encoded signatures are currently supported. Encrypted tokens are not supported. To create a comparison:
|
In CIDR Block Not In CIDR Block |
String |
Simplify adding network checks to support your zero trust policies. Verifies whether a user’s IP address is in, or not in, an IP subnet range. IPv4 and IPv6 addresses are supported. To create a comparison:
You must express the IP address range in Classless Inter-Domain Routing (CIDR) notation (the bitmask indicates the size of the routing prefix):
For example, consider a condition that checks for IP addresses
between 192.0.2.0 - 192.0.2.15. CIDR notation for this range is
Tip:
For help expressing an IP address range in CIDR notation, use a CIDR calculator. |
Is In Is Not In |
Collection, String |
Checks whether a string or a collection is in, or not in, another collection. |
Regular Expression |
String |
Checks whether a string matches a regular expression. |
Starts With Does Not Start With |
String |
Checks whether a value starts with, or doesn’t start with, another value. |
Comparator | Description |
---|---|
Matches Does Not Match |
Checks whether the inbound request name starts with, or does not start with, the conditional request name. Note:
For Matches to be true, the inbound
request name must contain the entirety of the conditional
request name. For example, if the conditional domain is
|
Equals Does Not Equal |
Checks whether the inbound request equals, or does not equal, the conditional request. |