private void setupActivePolicyDirectories() throws Exception { File repoPolicyDir = new File(m_repositoryPolicyDirectoryPath + File.separator + DEFAULT); if (!repoPolicyDir.exists()){ repoPolicyDir.mkdirs(); File source = new File(m_serverHome + File.separator + DEFAULT_REPOSITORY_POLICIES_DIRECTORY); FileUtils.copy(source, repoPolicyDir); } generateBackendPolicies(); }
public static String getPid(EvaluationCtx context) { EvaluationResult attribute = context.getResourceAttribute(STRING_ATTRIBUTE, Constants.OBJECT.PID.attributeId, null); BagAttribute element = getAttributeFromEvaluationResult(attribute); if (element == null) { logger.debug("PolicyFinderModule:getPid exit on can't get pid on request callback"); return null; } if (!(element.getType().equals(STRING_ATTRIBUTE))) { logger.debug("PolicyFinderModule:getPid exit on couldn't get pid from xacml request non-string returned"); return null; } return (element.size() == 1) ? (String) element.getValue() : null; }
/** * Does nothing at init time. */ @Override public void init(PolicyFinder finder) { try { logger.info("Loading repository policies..."); setupActivePolicyDirectories(); m_repositoryPolicies.clear(); Map<String,AbstractPolicy> repositoryPolicies = m_policyLoader.loadPolicies(m_policyParser, m_validateRepositoryPolicies, new File(m_repositoryBackendPolicyDirectoryPath)); repositoryPolicies.putAll( m_policyLoader.loadPolicies(m_policyParser, m_validateRepositoryPolicies, new File(m_repositoryPolicyDirectoryPath))); m_repositoryPolicies.addAll(repositoryPolicies.values()); m_repositoryPolicySet = toPolicySet(m_repositoryPolicies, m_combiningAlgorithm); } catch (Throwable t) { logger.error("Error loading repository policies: " + t.toString(), t); } }
String pid = PolicyFinderModule.getPid(context); if ("".equals(pid)) { logger.debug("no pid");
/** * Gets a deny-biased policy set that includes all repository-wide and * object-specific policies. */ @Override public PolicyFinderResult findPolicy(EvaluationCtx context) { PolicyFinderResult policyFinderResult = null; PolicySet policySet = m_repositoryPolicySet; try { String pid = getPid(context); if (pid != null && !pid.isEmpty()) { AbstractPolicy objectPolicyFromObject = m_policyLoader.loadObjectPolicy(m_policyParser.copy(), pid, m_validateObjectPoliciesFromDatastream); if (objectPolicyFromObject != null) { List<AbstractPolicy> policies = new ArrayList<AbstractPolicy>(m_repositoryPolicies); policies.add(objectPolicyFromObject); policySet = toPolicySet(policies, m_combiningAlgorithm); } } policyFinderResult = new PolicyFinderResult(policySet); } catch (Exception e) { logger.warn("PolicyFinderModule seriously failed to evaluate a policy ", e); policyFinderResult = new PolicyFinderResult(new Status(ERROR_CODE_LIST, e .getMessage())); } return policyFinderResult; }
String pid = PolicyFinderModule.getPid(context); if ("".equals(pid)) { logger.debug("no pid");
/** * Gets a deny-biased policy set that includes all repository-wide and * object-specific policies. */ @Override public PolicyFinderResult findPolicy(EvaluationCtx context) { PolicyFinderResult policyFinderResult = null; PolicySet policySet = m_repositoryPolicySet; try { String pid = getPid(context); if (pid != null && !pid.isEmpty()) { AbstractPolicy objectPolicyFromObject = m_policyLoader.loadObjectPolicy(m_policyParser.copy(), pid, m_validateObjectPoliciesFromDatastream); if (objectPolicyFromObject != null) { List<AbstractPolicy> policies = new ArrayList<AbstractPolicy>(m_repositoryPolicies); policies.add(objectPolicyFromObject); policySet = toPolicySet(policies, m_combiningAlgorithm); } } policyFinderResult = new PolicyFinderResult(policySet); } catch (Exception e) { logger.warn("PolicyFinderModule seriously failed to evaluate a policy ", e); policyFinderResult = new PolicyFinderResult(new Status(ERROR_CODE_LIST, e .getMessage())); } return policyFinderResult; }
@Test public void testRequestCtxAttribute() { String pid = PolicyFinderModule.getPid(test); assertEquals("lol:wut", pid); }
/** * Does nothing at init time. */ @Override public void init(PolicyFinder finder) { try { logger.info("Loading repository policies..."); setupActivePolicyDirectories(); m_repositoryPolicies.clear(); Map<String,AbstractPolicy> repositoryPolicies = m_policyLoader.loadPolicies(m_policyParser, m_validateRepositoryPolicies, new File(m_repositoryBackendPolicyDirectoryPath)); repositoryPolicies.putAll( m_policyLoader.loadPolicies(m_policyParser, m_validateRepositoryPolicies, new File(m_repositoryPolicyDirectoryPath))); m_repositoryPolicies.addAll(repositoryPolicies.values()); m_repositoryPolicySet = toPolicySet(m_repositoryPolicies, m_combiningAlgorithm); } catch (Throwable t) { logger.error("Error loading repository policies: " + t.toString(), t); } }
private void setupActivePolicyDirectories() throws Exception { File repoPolicyDir = new File(m_repositoryPolicyDirectoryPath + File.separator + DEFAULT); if (!repoPolicyDir.exists()){ repoPolicyDir.mkdirs(); File source = new File(m_serverHome + File.separator + DEFAULT_REPOSITORY_POLICIES_DIRECTORY); FileUtils.copy(source, repoPolicyDir); } generateBackendPolicies(); }
public static String getPid(EvaluationCtx context) { EvaluationResult attribute = context.getResourceAttribute(STRING_ATTRIBUTE, Constants.OBJECT.PID.attributeId, null); BagAttribute element = getAttributeFromEvaluationResult(attribute); if (element == null) { logger.debug("PolicyFinderModule:getPid exit on can't get pid on request callback"); return null; } if (!(element.getType().equals(STRING_ATTRIBUTE))) { logger.debug("PolicyFinderModule:getPid exit on couldn't get pid from xacml request non-string returned"); return null; } return (element.size() == 1) ? (String) element.getValue() : null; }
String pid = PolicyFinderModule.getPid(context); if (pid != null) { resourceId = "info:fedora/" + pid;
String pid = PolicyFinderModule.getPid(context); if (pid != null) { resourceId = "info:fedora/" + pid;