Browse Source

AMBARI-7731 Use jaas file for storm authentication in secured mode. (ababiichuk)

aBabiichuk 10 years ago
parent
commit
aa837da8ed

+ 47 - 1
ambari-web/app/controllers/main/admin/security/security_progress_controller.js

@@ -373,7 +373,7 @@ App.MainAdminSecurityProgressController = Em.Controller.extend({
         command.set('isError', true);
       }
       var cfg = data.items.findProperty('type', _tag.siteName);
-      _tag.configs = cfg.properties;
+      _tag.configs = this.modifyConfigsForSecure(_tag.siteName, cfg);
       if (cfg.properties_attributes) {
         _tag.properties_attributes = cfg.properties_attributes;
       }
@@ -383,6 +383,52 @@ App.MainAdminSecurityProgressController = Em.Controller.extend({
     }
   },
 
+  propertiesToUpdate: [
+    {
+      siteName: 'storm-site',
+      name: 'ui.childopts',
+      append: ' -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf'
+    },
+    {
+      siteName: 'storm-site',
+      name: 'supervisor.childopts',
+      append: ' -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf'
+    },
+    {
+      siteName: 'storm-site',
+      name: 'nimbus.childopts',
+      append: ' -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf'
+    }
+  ],
+
+  /**
+   * updates some configs for correct work in secure mode
+   * @method modifyConfigsForSecure
+   * @param {String} siteName
+   * @param {Object} cfg
+   * {
+   *   properties: {
+   *    'ui.childopts': 'value1'
+   *    'property2': 'value2'
+   *   }
+   * };
+   * has other properties but required filed is "properties";
+   * @returns {Object}
+   *   properties: {
+   *    'ui.childopts': 'value1 -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf'
+   *    'property2': 'value2'
+   *   }
+   */
+  modifyConfigsForSecure: function(siteName, cfg) {
+    var propertiesToUpdate = this.get('propertiesToUpdate').filterProperty('siteName', siteName);
+    if (propertiesToUpdate.length) {
+      propertiesToUpdate.forEach(function(p) {
+        cfg.properties[p.name] += p.append;
+      }, this);
+    }
+    return cfg.properties
+  },
+
   getAllConfigurationsErrorCallback: function (request, ajaxOptions, error) {
     var command = this.get('commands').findProperty('name', 'APPLY_CONFIGURATIONS');
     command.set('isSuccess', false);

+ 32 - 0
ambari-web/test/controllers/main/admin/security/security_progress_controller_test.js

@@ -408,4 +408,36 @@ describe('App.MainAdminSecurityProgressController', function () {
       });
     });
   });
+
+  describe('#modifyConfigsForSecure', function () {
+    var cfg = {
+      properties: {
+        'ui.childopts': 'value1',
+        'supervisor.childopts': 'value2',
+        'common_property': 'value4'
+      }
+    };
+    var siteName = 'storm-site';
+    var result = {
+      'ui.childopts': 'value1 -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf',
+      'supervisor.childopts': 'value2 -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf',
+      'common_property': 'value4'
+    };
+    var propertiesToUpdate = [
+      {
+        siteName: 'storm-site',
+        name: 'ui.childopts',
+        append: ' -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf'
+      },
+      {
+        siteName: 'storm-site',
+        name: 'supervisor.childopts',
+        append: ' -Djava.security.auth.login.config=/etc/storm/conf/storm_jaas.conf'
+      }
+    ];
+    it("should change some storm sonfigs", function () {
+      controller.set('propertiesToUpdate', propertiesToUpdate);
+      expect(controller.modifyConfigsForSecure(siteName, cfg)).to.eql(result);
+    });
+  });
 });