/** * Check for open(unanswered) requests and the filling of the allResponse map. * * @param lastResponse * the last response of a single decision service. * @param allResponses * a insertion-ordered map of request to responses. * @return all open (undefined) requests. */ private PDPRequestCollection findOpenRequests(final PDPResponseCollection lastResponse, final Map<PDPRequest,PDPResponse> allResponses) { PDPRequestCollection reqcol = new PDPRequestCollection(); for (Iterator<PDPResponse> respIt = lastResponse.iterator(); respIt.hasNext();) { PDPResponse resp = respIt.next(); if (resp.isUndefined()) { reqcol.add(resp.getRequest()); } allResponses.put(resp.getRequest(), resp); } return reqcol; }
private PDPRequestCollection findNonCachedRequests(final PDPRequestCollection reqInCol, final Map<PDPRequest, PDPResponse> allRequestsLookup) { PDPRequestCollection reqcol = new PDPRequestCollection(); for (Iterator<PDPRequest> reqIt = reqInCol.iterator(); reqIt.hasNext();) { PDPRequest req = reqIt.next(); // here check for cache PDPResponse resp = lookUp(req); // if not in cache... if (resp == null) { reqcol.add(req); } // also add with null to ensure correct order! allRequestsLookup.put(req, resp); } return reqcol; }
try { PDPRequestCollection openRequests = findNonCachedRequests(reqCol, allRequestsLookup); if (!openRequests.isEmpty()) { lastResponse = getDelegate().request(openRequests); putInCache(lastResponse, allRequestsLookup); if (lastResponse != null && lastResponse.size() == reqCol.size()) { return lastResponse; for (Iterator<PDPRequest> requests = reqCol.iterator(); requests.hasNext();) { PDPResponse resp = allRequestsLookup.get(requests.next()); response.add(resp);
@Override public PDPResponseCollection request(final PDPRequestCollection reqCol) throws DecisionProcessingException { PDPRequestCollection openRequests = reqCol; Map<PDPRequest, PDPResponse> allResponses = new LinkedHashMap<PDPRequest, PDPResponse>(); PDPResponseCollection lastResponse = null; for (Iterator<DecisionService> serviceIt = m_decisionServices.iterator(); serviceIt.hasNext() && !openRequests.isEmpty(); openRequests = findOpenRequests(lastResponse, allResponses)) { DecisionService decisionService = serviceIt.next(); lastResponse = decisionService.request(openRequests); } // little optimization if (m_decisionServices.size() == 1 && lastResponse != null) { return lastResponse; } PDPResponseCollection response = new PDPResponseCollection(); for (Iterator<PDPRequest> requests = reqCol.iterator(); requests.hasNext();) { PDPResponse resp = allResponses.get(requests.next()); response.add(resp); } return response; }
private String getCacheKey(PDPRequestCollection reqCol) { StringBuilder key = new StringBuilder(); for (Iterator<PDPRequest> requests = reqCol.iterator(); requests.hasNext();) { key.append(getCacheKey(requests.next())); } return key.toString(); }
public PDPRequestCollection(final PDPRequest pdpRequest) { this.add(pdpRequest); }
/** * @see org.n52.security.decision.DecisionService#request(PDPRequestCollection) */ public PDPResponseCollection request(final PDPRequestCollection reqCol) throws DecisionProcessingException { PDPResponseCollection respCol = new PDPResponseCollection(); Iterator itreq = reqCol.iterator(); while (itreq.hasNext()) { PDPRequest pdpRequest = (PDPRequest) itreq.next(); if (LOG.isDebugEnabled()) { LOG.debug("pdp request <" + pdpRequest + "> is permitted"); } respCol.add(new PDPResponse(PDPResponse.DECISION_PERMIT, pdpRequest)); } return respCol; } }
throws InterceptorException, EnforcementServiceException { PDPRequestCollection reqCollection = new PDPRequestCollection(); reqCollection.add(request);
public PDPResponseCollection request(PDPRequestCollection pdpReqCol) throws DecisionProcessingException { PDPResponseCollection resColl = new PDPResponseCollection(); LOG.info("PDP performs request"); Iterator it = pdpReqCol.iterator(); // iterate through request collection while (it.hasNext()) { PDPRequest request = (PDPRequest) it.next(); // only one target imaginable Target target = request.getTarget(); if (LOG.isDebugEnabled()) { LOG.debug(request); } int lPermission = permissionExists(target) ? PDPResponse.DECISION_PERMIT : PDPResponse.DECISION_DENY; PDPResponse response = new PDPResponse(lPermission, request); if (LOG.isDebugEnabled()) { LOG.debug(response); } resColl.add(response); } return resColl; }
/** * Get the policy decision from PDP for target ids * * @param subject * the authentication information * @param allIds * targets to check * @param actionId * Operation id * @return policy decision from PDP */ private PDPResponseCollection getPolicyDecisionFromPDP(Subject subject, TargetItemCollection allIds, String actionId) { // Request a policy-decision for every id from the pdp PDPRequestCollection reqCollection = new PDPRequestCollection(); for (TargetItem item : allIds.getItems()) { Target target = new Target(subject, (String) item.getTargetId(), actionId); PDPRequest request = new PDPRequest(target); reqCollection.add(request); } return getDecisionService().request(reqCollection); }
private PDPResponseCollection executeSingleRequest(final PDPRequestCollection pPDPRequestCollection) { final ArrayList<PDPRequest> orgRequests = new ArrayList<>(); Iterator converter = IteratorUtils.transformedIterator(pPDPRequestCollection.iterator(), new Transformer() { public Object transform(final Object input) { PDPRequest request = (PDPRequest) input; orgRequests.add(request); try { return convert52nRequestToXACMLRequest(request); } catch (XmlException e) { throw new DecisionProcessingException("can't convert pdp request: " + e, e); } } }); RequestDocument[] requests = (RequestDocument[]) IteratorUtils.toArray(converter, RequestDocument.class); ResponseDocument[] responses = m_requester.executeRequest(requests); PDPResponseCollection responseCol = new PDPResponseCollection(); for (int i = 0, j = responses.length; i < j; ++i) { ResponseDocument response = responses[i]; PDPResponse pdpresponse = convertXACMLResponseToPDPResponse(response, orgRequests.get(i)); responseCol.add(pdpresponse); } return responseCol; }
/** * Get the policy decision from PDP for target ids * * @param subject * the authentication information * @param allIds * targets to check * @param actionId * Operation id * @return policy decision from PDP */ private PDPResponseCollection getPolicyDecisionFromPDP(Subject subject, TargetItemCollection allIds, String actionId) { // Request a policy-decision for every id from the pdp PDPRequestCollection reqCollection = new PDPRequestCollection(); for (TargetItem item : allIds.getItems()) { Target target = new Target(subject, (String) item.getTargetId(), actionId); PDPRequest request = new PDPRequest(target); reqCollection.add(request); } return getDecisionService().request(reqCollection); }
LOG.info("PDP performs request"); Iterator it = pdpReqCol.iterator();
/** * Get the policy decision from PDP for target ids * * @param subject * the authentication information * @param allIds * targets to check * @param actionId * Operation id * @return policy decision from PDP */ private PDPResponseCollection getPolicyDecisionFromPDP(Subject subject, TargetItemCollection allIds, String actionId) { // Request a policy-decision for every id from the pdp PDPRequestCollection reqCollection = new PDPRequestCollection(); for (TargetItem item : allIds.getItems()) { Target target = new Target(subject, (String) item.getTargetId(), actionId); PDPRequest request = new PDPRequest(target); reqCollection.add(request); } return getDecisionService().request(reqCollection); } }
String actionId, String checkedBaseUrl) throws InterceptorException, EnforcementServiceException { PDPRequestCollection reqCollection = new PDPRequestCollection(); reqCollection.add(request); ids.addItem(new TargetItem(prop, resourceId));
String actionId, String checkedBaseUrl) throws InterceptorException, EnforcementServiceException { PDPRequestCollection reqCollection = new PDPRequestCollection(); reqCollection.add(request); ids.addItem(new TargetItem(prop, resourceId));
PDPRequestCollection reqCollection = new PDPRequestCollection(); reqCollection.add(request); ids.addItem(new TargetItem(foiID, resourceId));
+ SOSInterceptorGlobals.OPERATION_GET_FEATURE_OF_INTEREST).toString(); reqCollection = new PDPRequestCollection(); Target target = new Target(subject, resourceId, actionId); PDPRequest request = new PDPRequest(target); reqCollection.add(request);
PDPRequestCollection reqCollection = new PDPRequestCollection(); String resourceId = new StringBuffer(checkedBaseUrl).append( reqCollection.add(request);
PDPRequestCollection reqCollection = new PDPRequestCollection(); for (Iterator iterator = targetItems.getItems().iterator(); iterator.hasNext();) { TargetItem item = (TargetItem) iterator.next(); Target target = new Target(subject, (String) item.getTargetId(), actionId); PDPRequest request = new PDPRequest(target); reqCollection.add(request);