Alon Bar-Lev has uploaded a new change for review.

Change subject: aaa: add authn negotiation priority
......................................................................

aaa: add authn negotiation priority

Topic: AAA
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1120720
Change-Id: I1bb8803e44fbc75ff91c0b6791491ced58eff6d5
Signed-off-by: Alon Bar-Lev <alo...@redhat.com>
---
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticationProfile.java
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/NegotiationFilter.java
M 
backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/aaa/Authn.java
3 files changed, 27 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/32920/1

diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticationProfile.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticationProfile.java
index 4ccc24d..6abac58 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticationProfile.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthenticationProfile.java
@@ -22,6 +22,8 @@
 
     private ExtensionProxy mapper;
 
+    private int negotiationPriority;
+
     /**
      * Create a new authentication profile with the given name, authenticator 
and directory.
      *
@@ -31,11 +33,12 @@
      *     authenticated
      */
     public AuthenticationProfile(ExtensionProxy authn, ExtensionProxy authz, 
ExtensionProxy mapper) {
-        this.name = authn.getContext().<Properties> 
get(Base.ContextKeys.CONFIGURATION)
-                .getProperty(Authn.ConfigKeys.PROFILE_NAME);
+        Properties config = authn.getContext().<Properties> 
get(Base.ContextKeys.CONFIGURATION);
+        this.name = config.getProperty(Authn.ConfigKeys.PROFILE_NAME);
         this.authn = authn;
         this.authz = authz;
         this.mapper = mapper;
+        this.negotiationPriority = 
Integer.valueOf(config.getProperty(Authn.ConfigKeys.NEGOTIATION_PRIORITY, 
"50"));
     }
 
     /**
@@ -63,4 +66,8 @@
     public ExtensionProxy getMapper() {
         return mapper;
     }
+
+    public int getNegotiationPriority() {
+        return negotiationPriority;
+    }
 }
diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/NegotiationFilter.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/NegotiationFilter.java
index a82c075..8e05e22 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/NegotiationFilter.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/NegotiationFilter.java
@@ -5,6 +5,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Deque;
 import java.util.List;
 
@@ -84,11 +85,21 @@
                         if (profile != null) {
                             ExtMap authnContext = 
profile.getAuthn().getContext();
                             if ((authnContext.<Long> 
get(Authn.ContextKeys.CAPABILITIES).longValue() & caps) != 0) {
-                                profiles.add(0, profile);
+                                profiles.add(profile);
                                 
schemes.addAll(authnContext.<Collection<String>>get(Authn.ContextKeys.HTTP_AUTHENTICATION_SCHEME,
 Collections.<String>emptyList()));
                             }
                         }
                     }
+
+                    Collections.sort(
+                        profiles,
+                        new Comparator<AuthenticationProfile>() {
+                            @Override
+                            public int compare(AuthenticationProfile o1, 
AuthenticationProfile o2) {
+                                return 
Integer.valueOf(o1.getNegotiationPriority()).compareTo(o2.getNegotiationPriority());
+                            }
+                        }
+                    );
                 }
             }
         }
diff --git 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/aaa/Authn.java
 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/aaa/Authn.java
index ba07bfe..b50fd37 100644
--- 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/aaa/Authn.java
+++ 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/aaa/Authn.java
@@ -22,6 +22,12 @@
         public static final String AUTHZ_PLUGIN = 
"ovirt.engine.aaa.authn.authz.plugin";
         /** Optional mapping extension name. */
         public static final String MAPPING_PLUGIN = 
"ovirt.engine.aaa.authn.mapping.plugin";
+        /**
+         * Negotiation priority.
+         * Less is higher priority.
+         * Default: 50.
+         */
+        public static final String NEGOTIATION_PRIORITY = 
"ovirt.engine.aaa.authn.negotiation.priority";
     }
 
     /**


-- 
To view, visit http://gerrit.ovirt.org/32920
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1bb8803e44fbc75ff91c0b6791491ced58eff6d5
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to