From d7899fb9299b55db23ac654aa7d6b6530f190ded Mon Sep 17 00:00:00 2001 From: lresende Date: Fri, 24 Jul 2009 07:45:36 +0000 Subject: Adding support for explicitly configuring policySets git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@797356 13f79535-47bb-0310-9956-ffa450edef68 --- ...AuthenticationImplementationPolicyProvider.java | 114 ++++++++++++----- ...APRealmAuthenticationServicePolicyProvider.java | 135 ++++++++++++++------- 2 files changed, 176 insertions(+), 73 deletions(-) (limited to 'branches/sca-java-1.x/modules') diff --git a/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java b/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java index 88f153c064..ad217d69ff 100644 --- a/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java +++ b/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java @@ -68,57 +68,111 @@ public class LDAPRealmAuthenticationImplementationPolicyProvider implements Poli */ private List findAuthenticationPolicies(Operation op) { List polices = new ArrayList(); - if (implementation instanceof OperationsConfigurator) { - OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation; - for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { - if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) { - for (PolicySet ps : cop.getPolicySets()) { - for (Object p : ps.getPolicies()) { - if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) { - polices.add((LDAPRealmAuthenticationPolicy)p); - } - } + + + // check explicity added policies first + ConfiguredOperation configuredOperation = findOperation(op); + if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) { + for ( PolicySet ps : configuredOperation.getPolicySets()) { + for (Object p : ps.getPolicies()) { + if (p instanceof LDAPRealmAuthenticationPolicy) { + polices.add((LDAPRealmAuthenticationPolicy)p); } } } } - List policySets = component.getPolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) { - polices.add((LDAPRealmAuthenticationPolicy)p); + // otherwise find applicable policySets + if ( polices.size() == 0) { + + if (implementation instanceof OperationsConfigurator) { + OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation; + for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { + if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) { + for (PolicySet ps : cop.getPolicySets()) { + for (Object p : ps.getPolicies()) { + if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) { + polices.add((LDAPRealmAuthenticationPolicy)p); + } + } + } + } } } + + List policySets = component.getPolicySets(); + for (PolicySet ps : policySets) { + for (Object p : ps.getPolicies()) { + if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) { + polices.add((LDAPRealmAuthenticationPolicy)p); + } + } + } } + return polices; } private List findAuthorizationPolicies(Operation op) { List polices = new ArrayList(); - if (implementation instanceof OperationsConfigurator) { - OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation; - for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { - if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) { - for (PolicySet ps : cop.getPolicySets()) { - for (Object p : ps.getPolicies()) { - if (AuthorizationPolicy.class.isInstance(p)) { - polices.add((AuthorizationPolicy)p); - } - } + + + // check explicity added policies first + ConfiguredOperation configuredOperation = findOperation(op); + if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) { + for ( PolicySet ps : configuredOperation.getPolicySets()) { + for (Object p : ps.getPolicies()) { + if (p instanceof AuthorizationPolicy) { + polices.add((AuthorizationPolicy)p); } } } } - List policySets = component.getPolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (AuthorizationPolicy.class.isInstance(p)) { - polices.add((AuthorizationPolicy)p); + // otherwise find applicable policySets + if ( polices.size() == 0) { + + if (implementation instanceof OperationsConfigurator) { + OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation; + for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { + if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) { + for (PolicySet ps : cop.getPolicySets()) { + for (Object p : ps.getPolicies()) { + if (AuthorizationPolicy.class.isInstance(p)) { + polices.add((AuthorizationPolicy)p); + } + } + } + } + } + } + + List policySets = component.getPolicySets(); + for (PolicySet ps : policySets) { + for (Object p : ps.getPolicies()) { + if (AuthorizationPolicy.class.isInstance(p)) { + polices.add((AuthorizationPolicy)p); + } } } + } + return polices; } + + + private ConfiguredOperation findOperation(Operation operation) { + ConfiguredOperation configuredOperation = null; + + for (ConfiguredOperation cOperation : ((OperationsConfigurator)component).getConfiguredOperations()) { + if(cOperation.getName().equals(operation.getName())) { + configuredOperation = cOperation; + break; + } + } + + return configuredOperation; + } + } diff --git a/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java b/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java index 6189de5a5a..69520081b3 100644 --- a/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java +++ b/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java @@ -81,45 +81,64 @@ public class LDAPRealmAuthenticationServicePolicyProvider implements PolicyProvi */ /** - * + * Find applicable authorization policySets + * It first check if any explicitly policySet was identified + * Otherwise it look into the list of applicablePolicySets * @param op * @return */ private List findAuthenticationPolicies(Operation op) { List polices = new ArrayList(); - // FIXME: How do we get a list of effective policySets for a given operation? - for(Operation operation : operations) { - if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) { - for (PolicySet ps : operation.getPolicySets()) { - for (Object p : ps.getPolicies()) { - if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) { - polices.add((LDAPRealmAuthenticationPolicy)p); - } + + // check explicity added policies first + ConfiguredOperation configuredOperation = findOperation(op); + if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) { + for ( PolicySet ps : configuredOperation.getPolicySets()) { + for (Object p : ps.getPolicies()) { + if (p instanceof LDAPRealmAuthenticationPolicy) { + polices.add((LDAPRealmAuthenticationPolicy)p); } } } } - if (service instanceof OperationsConfigurator) { - OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service; - for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { - if (cop!= null && cop.getName() != null && cop.getName().equals(op.getName())) { - for (PolicySet ps : cop.getApplicablePolicySets()) { + + // otherwise find applicable policySets + if ( polices.size() == 0) { + // FIXME: How do we get a list of effective policySets for a given operation? + for(Operation operation : operations) { + if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) { + for (PolicySet ps : operation.getPolicySets()) { for (Object p : ps.getPolicies()) { - if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) { + if (p instanceof LDAPRealmAuthenticationPolicy) { polices.add((LDAPRealmAuthenticationPolicy)p); } } } } } - } - List policySets = service.getPolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) { - polices.add((LDAPRealmAuthenticationPolicy)p); + if (service instanceof OperationsConfigurator) { + OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service; + for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { + if (cop!= null && cop.getName() != null && cop.getName().equals(op.getName())) { + for (PolicySet ps : cop.getApplicablePolicySets()) { + for (Object p : ps.getPolicies()) { + if (p instanceof LDAPRealmAuthenticationPolicy) { + polices.add((LDAPRealmAuthenticationPolicy)p); + } + } + } + } + } + } + + List policySets = service.getPolicySets(); + for (PolicySet ps : policySets) { + for (Object p : ps.getPolicies()) { + if (p instanceof LDAPRealmAuthenticationPolicy) { + polices.add((LDAPRealmAuthenticationPolicy)p); + } } } } @@ -128,50 +147,80 @@ public class LDAPRealmAuthenticationServicePolicyProvider implements PolicyProvi } /** - * + * Find applicable authorization policySets + * It first check if any explicitly policySet was identified + * Otherwise it look into the list of applicablePolicySets * @param op * @return */ private List findAuthorizationPolicies(Operation op) { List polices = new ArrayList(); - // FIXME: How do we get a list of effective policySets for a given operation? - for(Operation operation : operations) { - if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) { - for (PolicySet ps : operation.getPolicySets()) { - for (Object p : ps.getPolicies()) { - if (AuthorizationPolicy.class.isInstance(p)) { - polices.add((AuthorizationPolicy)p); - } + + // check explicity added policies first + ConfiguredOperation configuredOperation = findOperation(op); + if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) { + for ( PolicySet ps : configuredOperation.getPolicySets()) { + for (Object p : ps.getPolicies()) { + if (p instanceof AuthorizationPolicy) { + polices.add((AuthorizationPolicy)p); } } } } - - if (service instanceof OperationsConfigurator) { - OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service; - for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { - if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) { - for (PolicySet ps : cop.getApplicablePolicySets()) { + + // otherwise find applicable policySets + if ( polices.size() == 0) { + // FIXME: How do we get a list of effective policySets for a given operation? + for(Operation operation : operations) { + if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) { + for (PolicySet ps : operation.getPolicySets()) { for (Object p : ps.getPolicies()) { - if (AuthorizationPolicy.class.isInstance(p)) { + if (p instanceof AuthorizationPolicy) { polices.add((AuthorizationPolicy)p); } } } } } - } - List policySets = service.getPolicySets(); - for (PolicySet ps : policySets) { - for (Object p : ps.getPolicies()) { - if (AuthorizationPolicy.class.isInstance(p)) { - polices.add((AuthorizationPolicy)p); + if (service instanceof OperationsConfigurator) { + OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service; + for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) { + if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) { + for (PolicySet ps : cop.getApplicablePolicySets()) { + for (Object p : ps.getPolicies()) { + if (p instanceof AuthorizationPolicy) { + polices.add((AuthorizationPolicy)p); + } + } + } + } } } + + List policySets = service.getPolicySets(); + for (PolicySet ps : policySets) { + for (Object p : ps.getPolicies()) { + if (p instanceof AuthorizationPolicy) { + polices.add((AuthorizationPolicy)p); + } + } + } } return polices; } + private ConfiguredOperation findOperation(Operation operation) { + ConfiguredOperation configuredOperation = null; + + for (ConfiguredOperation cOperation : ((OperationsConfigurator)component).getConfiguredOperations()) { + if(cOperation.getName().equals(operation.getName())) { + configuredOperation = cOperation; + break; + } + } + + return configuredOperation; + } } -- cgit v1.2.3