This is an automated email from the ASF dual-hosted git repository.

ffang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new d89aa0b  [CXF-7815] follow up refector
     new e5c6c93  Merge branch 'master' of github.com:apache/cxf
d89aa0b is described below

commit d89aa0baafba3d0433be054d45606e223479b620
Author: Freeman Fang <[email protected]>
AuthorDate: Thu Nov 8 10:03:08 2018 +0800

    [CXF-7815] follow up refector
---
 .../AbstractSecurityContextInInterceptor.java      |  5 +---
 .../security/DefaultSecurityContext.java           | 29 +++++++++++-----------
 2 files changed, 16 insertions(+), 18 deletions(-)

diff --git 
a/core/src/main/java/org/apache/cxf/interceptor/security/AbstractSecurityContextInInterceptor.java
 
b/core/src/main/java/org/apache/cxf/interceptor/security/AbstractSecurityContextInInterceptor.java
index 3d32f06..8d71bda 100644
--- 
a/core/src/main/java/org/apache/cxf/interceptor/security/AbstractSecurityContextInInterceptor.java
+++ 
b/core/src/main/java/org/apache/cxf/interceptor/security/AbstractSecurityContextInInterceptor.java
@@ -24,7 +24,6 @@ import java.util.logging.Logger;
 import javax.security.auth.Subject;
 
 import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.common.security.GroupPrincipal;
 import org.apache.cxf.common.security.SecurityToken;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.message.Message;
@@ -71,9 +70,7 @@ public abstract class AbstractSecurityContextInInterceptor 
extends AbstractPhase
     protected Principal getPrincipal(Principal originalPrincipal, Subject 
subject) {
         Principal[] ps = subject.getPrincipals().toArray(new 
Principal[subject.getPrincipals().size()]);
         if (ps != null && ps.length > 0 
-            && !(ps[0] instanceof GroupPrincipal
-            || DefaultSecurityContext.instanceOf(ps[0], 
"java.security.acl.Group")
-            || DefaultSecurityContext.instanceOf(ps[0], 
"org.apache.karaf.jaas.boot.principal.Group"))) {
+            && !DefaultSecurityContext.isGroupPrincipal(ps[0])) {
             return ps[0];
         }
         return originalPrincipal;
diff --git 
a/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
 
b/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
index f080511..71a212f 100644
--- 
a/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
+++ 
b/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
@@ -65,9 +65,7 @@ public class DefaultSecurityContext implements 
LoginSecurityContext {
         }
 
         for (Principal principal : subject.getPrincipals()) {
-            if (!(principal instanceof GroupPrincipal
-                || instanceOf(principal, "java.security.acl.Group")
-                || instanceOf(principal, 
"org.apache.karaf.jaas.boot.principal.Group"))
+            if (!isGroupPrincipal(principal)
                 && (principalName == null || 
principal.getName().equals(principalName))) {
                 return principal;
             }
@@ -76,9 +74,7 @@ public class DefaultSecurityContext implements 
LoginSecurityContext {
         // No match for the principalName. Just return first non-Group 
Principal
         if (principalName != null) {
             for (Principal principal : subject.getPrincipals()) {
-                if (!(principal instanceof GroupPrincipal
-                    || instanceOf(principal, "java.security.acl.Group")
-                    || instanceOf(principal, 
"org.apache.karaf.jaas.boot.principal.Group"))) {
+                if (!isGroupPrincipal(principal)) {
                     return principal;
                 }
             }
@@ -94,9 +90,7 @@ public class DefaultSecurityContext implements 
LoginSecurityContext {
     public boolean isUserInRole(String role) {
         if (subject != null) {
             for (Principal principal : subject.getPrincipals()) {
-                if ((principal instanceof GroupPrincipal
-                    || instanceOf(principal, "java.security.acl.Group")
-                    || instanceOf(principal, 
"org.apache.karaf.jaas.boot.principal.Group")) 
+                if (isGroupPrincipal(principal) 
                     && checkGroup((Principal)principal, role)) {
                     return true;
                 } else if (p != principal
@@ -108,6 +102,7 @@ public class DefaultSecurityContext implements 
LoginSecurityContext {
         return false;
     }
 
+
     protected boolean checkGroup(Principal principal, String role) {
         if (principal.getName().equals(role)) {
             return true;
@@ -126,9 +121,7 @@ public class DefaultSecurityContext implements 
LoginSecurityContext {
             // this might be a plain role but could represent a group 
consisting of other groups/roles
             Principal member = members.nextElement();
             if (member.getName().equals(role)
-                || (member instanceof GroupPrincipal
-                    || instanceOf(member, "java.security.acl.Group")
-                    || instanceOf(member, 
"org.apache.karaf.jaas.boot.principal.Group")) 
+                || isGroupPrincipal(member) 
                 && checkGroup((GroupPrincipal)member, role)) {
                 return true;
             }
@@ -153,11 +146,19 @@ public class DefaultSecurityContext implements 
LoginSecurityContext {
         return roles;
     }
     
-    public static boolean instanceOf(Object obj, String className) { 
+    
+    private static boolean instanceOf(Object obj, String className) { 
         try {
             return Class.forName(className).isInstance(obj);
         } catch (ClassNotFoundException ex) {
             return false;
         }
-    } 
+    }
+    
+    public static boolean isGroupPrincipal(Principal principal) {
+        return principal instanceof GroupPrincipal
+            || instanceOf(principal, "java.security.acl.Group")
+            || instanceOf(principal, 
"org.apache.karaf.jaas.boot.principal.Group");
+    }
+
 }

Reply via email to