summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/DelegateDAO.java11
-rw-r--r--cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/PermEval.java15
-rw-r--r--cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/test/JU_PermEval.java19
3 files changed, 39 insertions, 6 deletions
diff --git a/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/DelegateDAO.java b/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/DelegateDAO.java
index b137b640..ad862176 100644
--- a/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/DelegateDAO.java
+++ b/auth/auth-cass/src/main/java/org/onap/aaf/auth/dao/cass/DelegateDAO.java
@@ -4,6 +4,8 @@
* ===========================================================================
* Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
* ===========================================================================
+ * Modifications Copyright (C) 2018 IBM.
+ * ============================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
@@ -44,6 +46,7 @@ public class DelegateDAO extends CassDAOImpl<AuthzTrans, DelegateDAO.Data> {
public static final String TABLE = "delegate";
private PSInfo psByDelegate;
+ private static final int KEYLIMIT = 1;
public DelegateDAO(AuthzTrans trans, Cluster cluster, String keyspace) {
super(trans, DelegateDAO.class.getSimpleName(),cluster,keyspace,Data.class,TABLE, readConsistency(trans,TABLE), writeConsistency(trans,TABLE));
@@ -55,11 +58,11 @@ public class DelegateDAO extends CassDAOImpl<AuthzTrans, DelegateDAO.Data> {
init(trans);
}
- private static final int KEYLIMIT = 1;
+
public static class Data implements Bytification {
- public String user;
- public String delegate;
- public Date expires;
+ public static String user;
+ public static String delegate;
+ public static Date expires;
@Override
public ByteBuffer bytify() throws IOException {
diff --git a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/PermEval.java b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/PermEval.java
index 2c7aa12b..7c843dbd 100644
--- a/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/PermEval.java
+++ b/cadi/aaf/src/main/java/org/onap/aaf/cadi/aaf/PermEval.java
@@ -66,11 +66,22 @@ public class PermEval {
if (sInst.charAt(0)==startChar) { // To compare key-to-key, both strings must be keys
String[] skeys=Split.split(startChar,sInst);
String[] pkeys=Split.split(startChar,pInst);
- if (skeys.length!=pkeys.length) return false;
+ if (pkeys.length<skeys.length) {
+ return false;
+ } else if(pkeys.length > skeys.length &&
+ (skeys.length==0 || !ASTERIX.equals(skeys[skeys.length-1]))) {
+ return false;
+ }
boolean pass = true;
for (int i=1;pass && i<skeys.length;++i) { // We start at 1, because the first one, being ":" is always ""
- if (ASTERIX.equals(skeys[i]))continue; // Server data accepts all for this key spot
+ if (ASTERIX.equals(skeys[i])) {
+ if(i==skeys.length-1) {
+ // accept all after
+ return true;
+ }
+ continue; // Server data accepts all for this key spot
+ }
pass = false;
for (String sItem : Split.split(LIST_SEP,skeys[i])) { // allow for "," definition in Action
if (pkeys[i].length()==0) {
diff --git a/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/test/JU_PermEval.java b/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/test/JU_PermEval.java
index 3e137c25..5d242005 100644
--- a/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/test/JU_PermEval.java
+++ b/cadi/aaf/src/test/java/org/onap/aaf/cadi/aaf/test/JU_PermEval.java
@@ -211,5 +211,24 @@ public class JU_PermEval {
@SuppressWarnings("unused")
PermEval pe = new PermEval();
}
+
+ @Test
+ public void pathTest() {
+ assertTrue(PermEval.evalInstance("/","/"));
+ assertFalse(PermEval.evalInstance("/","/hello"));
+ assertTrue(PermEval.evalInstance("/","/"));
+ assertTrue(PermEval.evalInstance("/onap/so/infra/*/*/*","/onap/so/infra/a/b/c"));
+ assertFalse(PermEval.evalInstance("/onap/so/infra/*","/onap/so/infra"));
+ assertTrue(PermEval.evalInstance("/onap/so/infra/*","/onap/so/infra/a/b/c"));
+ assertTrue(PermEval.evalInstance("/onap/so/infra*","/onap/so/infra"));
+ assertFalse(PermEval.evalInstance("/onap/so/infra*/hello","/onap/so/infra"));
+ assertFalse(PermEval.evalInstance("/onap/so/infra*/hello","/onap/so/infra23"));
+ assertTrue(PermEval.evalInstance("/onap/so/infra*/hello","/onap/so/infra23/hello"));
+ assertFalse(PermEval.evalInstance("/onap/so/*/hello","/onap/so/infra23"));
+ assertFalse(PermEval.evalInstance("/onap/so/*/","/onap/so/infra23"));
+ assertTrue(PermEval.evalInstance("/onap/so/*/","/onap/so/infra23/"));
+ }
+
+
}