public static void addSamplePolicies(Registry registry) { File policyFolder = new File( CarbonUtils.getCarbonHome() + File.separator + "repository" + File.separator + "resources" + File.separator + "security" + File.separator + "policies" + File.separator + "xacml" + File.separator + "default"); if (policyFolder.exists()) { for (File policyFile : policyFolder.listFiles()) { if (policyFile.isFile()) { PolicyDTO policyDTO = new PolicyDTO(); try { policyDTO.setPolicy(FileUtils.readFileToString(policyFile)); EntitlementUtil.addFilesystemPolicy(policyDTO, registry, false); } catch (Exception e) { // log and ignore log.error("Error while adding sample XACML policies", e); } } } } }
@Override public boolean overrideDefaultCache() { Properties properties = EntitlementServiceComponent.getEntitlementConfig().getEngineProperties(); if ("true".equals(properties.getProperty(PDPConstants.RESOURCE_CACHING))) { abstractResourceCache = EntitlementUtil.getCommonCache(PDPConstants.PIP_ABSTRACT_RESOURCE_CACHE); isAbstractResourceCacheEnabled = true; return true; } else { return false; } }
/* * (non-Javadoc) * * @see org.wso2.balana.finder.AttributeFinderModule#findAttribute(java.net.URI, java.net.URI, * java.net.URI, java.net.URI, org.wso2.balana.EvaluationCtx, int) */ public EvaluationResult findAttribute( URI attributeType, URI attributeId, String issuer, URI category, EvaluationCtx context) { List<AttributeValue> attrBag = new ArrayList<AttributeValue>(); // Get the list of attribute finders who are registered with this particular attribute. List<PIPAttributeFinder> finders = attrFinders.get(attributeId.toString()); if (finders == null || finders.size() == 0) { // there is a API for refresh attribute finder so remove this // try { // refreshAttributeFindersForNewAttributeId(); // } catch (Exception e) { // log.warn("Error while refreshing attribute finders"); // } finders = attrFinders.get(attributeId.toString()); if (finders == null || finders.size() == 0) { log.info("No attribute designators defined for the attribute " + attributeId.toString()); return new EvaluationResult(BagAttribute.createEmptyBag(attributeType)); } } try { for (Iterator iterator = finders.iterator(); iterator.hasNext(); ) { PIPAttributeFinder pipAttributeFinder = (PIPAttributeFinder) iterator.next(); if (log.isDebugEnabled()) { log.debug( String.format( "Finding attributes with the PIP attribute handler %1$s", pipAttributeFinder.getClass())); } Set<String> attrs = null; String key = null; if (attributeFinderCache != null && !pipAttributeFinder.overrideDefaultCache()) { key = attributeType.toString() + attributeId.toString() + category.toString() + encodeContext(context); if (issuer != null) { key += issuer; } if (key != null) { attrs = attributeFinderCache.getFromCache(tenantId, key); } } if (attrs == null) { if (log.isDebugEnabled()) { log.debug("Carbon Attribute Cache Miss"); } attrs = pipAttributeFinder.getAttributeValues( attributeType, attributeId, category, issuer, context); if (attributeFinderCache != null && key != null && !pipAttributeFinder.overrideDefaultCache()) { attributeFinderCache.addToCache(tenantId, key, attrs); } } else { if (log.isDebugEnabled()) { log.debug("Carbon Attribute Cache Hit"); } } if (attrs != null) { for (Iterator iterAttr = attrs.iterator(); iterAttr.hasNext(); ) { final String attr = (String) iterAttr.next(); AttributeValue attribute = EntitlementUtil.getAttributeValue(attr, attributeType.toString()); attrBag.add(attribute); } } } } catch (ParsingException e) { log.error("Error while parsing attribute values from EvaluationCtx : " + e); ArrayList<String> code = new ArrayList<String>(); code.add(Status.STATUS_MISSING_ATTRIBUTE); Status status = new Status( code, "Error while parsing attribute values from EvaluationCtx : " + e.getMessage()); return new EvaluationResult(status); } catch (ParseException e) { e.printStackTrace(); log.error("Error while parsing attribute values from EvaluationCtx : " + e); ArrayList<String> code = new ArrayList<String>(); code.add(Status.STATUS_MISSING_ATTRIBUTE); Status status = new Status( code, "Error while parsing attribute values from EvaluationCtx : " + e.getMessage()); return new EvaluationResult(status); } catch (URISyntaxException e) { log.error("Error while parsing attribute values from EvaluationCtx : " + e); ArrayList<String> code = new ArrayList<String>(); code.add(Status.STATUS_MISSING_ATTRIBUTE); Status status = new Status( code, "Error while parsing attribute values from EvaluationCtx :" + e.getMessage()); return new EvaluationResult(status); } catch (Exception e) { log.error("Error while retrieving attribute values from PIP attribute finder : " + e); ArrayList<String> code = new ArrayList<String>(); code.add(Status.STATUS_MISSING_ATTRIBUTE); Status status = new Status( code, "Error while retrieving attribute values from PIP" + " attribute finder : " + e.getMessage()); return new EvaluationResult(status); } return new EvaluationResult(new BagAttribute(attributeType, attrBag)); }