diff --git a/modules/distribution/resources/operation_policies/definitions/jwtClaimBasedAccessValidator_v1.j2 b/modules/distribution/resources/operation_policies/definitions/jwtClaimBasedAccessValidator_v1.j2 new file mode 100644 index 0000000000..b6ceb17e78 --- /dev/null +++ b/modules/distribution/resources/operation_policies/definitions/jwtClaimBasedAccessValidator_v1.j2 @@ -0,0 +1,4 @@ + + + + diff --git a/modules/distribution/resources/operation_policies/specifications/jwtClaimBasedAccessValidator_v1.json b/modules/distribution/resources/operation_policies/specifications/jwtClaimBasedAccessValidator_v1.json new file mode 100644 index 0000000000..810209fdcf --- /dev/null +++ b/modules/distribution/resources/operation_policies/specifications/jwtClaimBasedAccessValidator_v1.json @@ -0,0 +1,52 @@ +{ + "category": "Mediation", + "name": "jwtClaimBasedAccessValidator", + "version": "v1", + "displayName": "JWT claim based access grant validator", + "description": "This policy validates configured claim name and value in this policy with the claim name and value sent in the JWT access token to grant access to the API resource.", + "applicableFlows": [ + "request" + ], + "supportedGateways": [ + "Synapse" + ], + "supportedApiTypes": [ + "HTTP" + ], + "policyAttributes": [ + { + "name": "grantVerificationClaim", + "displayName": "Access grant claim name", + "description": "This should be the name the custom claim which is expected in the JWT access token", + "validationRegex": "^[a-zA-Z_]+$", + "type": "String", + "defaultValue": "aut", + "required": true + }, + { + "name": "grantVerificationClaimValue", + "displayName": "Access grant claim value", + "description": "This should be the alue of a custom claim which is expected in the JWT access token", + "type": "String", + "defaultValue": "APPLICATION", + "required": true + }, + { + "name": "shouldAllowValidation", + "displayName": "Allow claim based access grant validation", + "description": "If ticked, the claim based access grant validation will be performed.", + "type": "Boolean", + "defaultValue": "true", + "required": false + }, + { + "name": "claimBasedAccessGrantValidator", + "displayName": "JWT claim based access grant validation mediator", + "description": "Fully qualified class name for the validation implementation", + "validationRegex": "^([a-zA-Z_$][a-zA-Z\\d_$.]*)$", + "type": "String", + "defaultValue": "org.wso2.carbon.apimgt.gateway.mediators.ClaimBasedResourceAccessValidationMediator", + "required": true + } + ] + } \ No newline at end of file