You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/10/04 16:59:12 UTC

[pulsar] branch master updated: Add System Property Option for Athenz (#2707)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new bb945d3  Add System Property Option for Athenz (#2707)
bb945d3 is described below

commit bb945d388ebf04fee3583680e5ee86988b131e26
Author: Yuta Mochizuki <41...@users.noreply.github.com>
AuthorDate: Fri Oct 5 01:59:08 2018 +0900

    Add System Property Option for Athenz (#2707)
---
 .../authentication/AuthenticationProviderAthenz.java      | 12 ++++++++++--
 .../authentication/AuthenticationProviderAthenzTest.java  | 15 +++++++++++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/pulsar-broker-auth-athenz/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenz.java b/pulsar-broker-auth-athenz/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenz.java
index 3a00c20..c2cf45d 100644
--- a/pulsar-broker-auth-athenz/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenz.java
+++ b/pulsar-broker-auth-athenz/src/main/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenz.java
@@ -25,6 +25,7 @@ import java.security.PublicKey;
 
 import javax.naming.AuthenticationException;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.pulsar.broker.authentication.AuthenticationDataSource;
 import org.apache.pulsar.broker.authentication.AuthenticationProvider;
 import org.slf4j.Logger;
@@ -39,14 +40,21 @@ public class AuthenticationProviderAthenz implements AuthenticationProvider {
 
     private static final String DOMAIN_NAME_LIST = "athenzDomainNames";
 
+    private static final String SYS_PROP_DOMAIN_NAME_LIST = "pulsar.athenz.domain.names";
+
     private List<String> domainNameList = null;
 
     @Override
     public void initialize(ServiceConfiguration config) throws IOException {
-        if (config.getProperty(DOMAIN_NAME_LIST) == null) {
+        String domainNames;
+        if (config.getProperty(DOMAIN_NAME_LIST) != null) {
+            domainNames = (String) config.getProperty(DOMAIN_NAME_LIST);
+        } else if (!StringUtils.isEmpty(System.getProperty(SYS_PROP_DOMAIN_NAME_LIST))) {
+            domainNames = System.getProperty(SYS_PROP_DOMAIN_NAME_LIST);
+        } else {
             throw new IOException("No athenz domain name specified");
         }
-        String domainNames = (String) config.getProperty(DOMAIN_NAME_LIST);
+
         domainNameList = Lists.newArrayList(domainNames.split(","));
         log.info("Supported domain names for athenz: {}", domainNameList);
     }
diff --git a/pulsar-broker-auth-athenz/src/test/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenzTest.java b/pulsar-broker-auth-athenz/src/test/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenzTest.java
index 75934b1..1946a01 100644
--- a/pulsar-broker-auth-athenz/src/test/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenzTest.java
+++ b/pulsar-broker-auth-athenz/src/test/java/org/apache/pulsar/broker/authentication/AuthenticationProviderAthenzTest.java
@@ -20,6 +20,7 @@ package org.apache.pulsar.broker.authentication;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.fail;
+
 import org.testng.annotations.Test;
 import org.testng.annotations.BeforeClass;
 
@@ -64,6 +65,20 @@ public class AuthenticationProviderAthenzTest {
     }
 
     @Test
+    public void testInitilizeFromSystemPropeties() {
+        System.setProperty("pulsar.athenz.domain.names", "test_provider");
+        ServiceConfiguration emptyConf = new ServiceConfiguration();
+        Properties emptyProp = new Properties();
+        emptyConf.setProperties(emptyProp);
+        AuthenticationProviderAthenz sysPropProvider = new AuthenticationProviderAthenz();
+        try {
+            sysPropProvider.initialize(emptyConf);
+        } catch (Exception e) {
+            fail("Fail to Read pulsar.athenz.domain.names from System Properties");
+        }
+    }
+
+    @Test
     public void testAuthenticateSignedToken() throws Exception {
 
         List<String> roles = new ArrayList<String>() {