79 String scopeExpression = resource.getScopeExpression();
80 JsonLogicNode node = JsonLogicNodeParser.parseNode(scopeExpression);
82 log.trace(
"Evaluating scope expression ...");
85 List<String> dataScopes = node.getDataCopy();
87 if (dataScopes.size() == scopeIdToDnMap.size()) {
89 List<Boolean> evaluatedResults =
new ArrayList<Boolean>();
90 for (String scopeId : dataScopes) {
91 log.trace(
"Evaluating scope result for scope: " + scopeId +
" ...");
93 log.trace(
"Evaluated scope result: " + b +
", scope: " + scopeId);
94 evaluatedResults.add(b);
97 String rule = node.getRule().toString();
99 if (evaluatedResults.isEmpty()) {
100 result = JsonLogic.apply(rule);
102 result = JsonLogic.apply(rule, Util.asJsonSilently(evaluatedResults));
105 log.trace(
"JsonLogic evaluation result: " + result +
", rule: " + rule +
", data:" + Util.asJsonSilently(evaluatedResults));
111 }
catch (Exception e) {
112 log.error(
"Failed to evaluate jsonlogic expression. Expression: " + scopeExpression +
", resourceDn: " + resource.getDn());
115 log.error(
"Scope size in JsonLogic object 'data' and in permission differs which is forbidden. Node data: " + node +
116 ", permissionDns: " + permission.getScopeDns() +
", result scopeIds: " +
scopeIdToDnMap);
119 log.error(
"Failed to parse JsonLogic object, invalid expression: " + scopeExpression);
121 throw new UmaWebException(Response.Status.FORBIDDEN,
errorResponseFactory, UmaErrorResponseType.FORBIDDEN_BY_POLICY);
boolean evaluateByScopes(Map< UmaScriptByScope, UmaAuthorizationContext > scriptMap)
Definition: UmaExpressionService.java:66
static Map< String, String > scopeIdToDnMap(Map< UmaScriptByScope, UmaAuthorizationContext > scriptMap, List< String > scriptDNs)
Definition: UmaExpressionService.java:144
static Map< UmaScriptByScope, UmaAuthorizationContext > filterByScopeDns(Map< UmaScriptByScope, UmaAuthorizationContext > scriptMap, List< String > scopeDNs)
Definition: UmaExpressionService.java:154
Logger log
Definition: UmaExpressionService.java:37
void removeFalseScopesFromPermission(UmaPermission permission, List< String > dataScopes, Map< String, String > scopeIdToDnMap, List< Boolean > evaluatedResults)
Definition: UmaExpressionService.java:124
ErrorResponseFactory errorResponseFactory
Definition: UmaExpressionService.java:41