Пример #1
0
        public virtual void Test()
        {
            string krb5LoginModuleName;

            if (Runtime.GetProperty("java.vendor").Contains("IBM"))
            {
                krb5LoginModuleName = "com.ibm.security.auth.module.Krb5LoginModule";
            }
            else
            {
                krb5LoginModuleName = "com.sun.security.auth.module.Krb5LoginModule";
            }
            ZKSignerSecretProvider.JaasConfiguration jConf = new ZKSignerSecretProvider.JaasConfiguration
                                                                 ("foo", "foo/localhost", "/some/location/foo.keytab");
            AppConfigurationEntry[] entries = jConf.GetAppConfigurationEntry("bar");
            NUnit.Framework.Assert.IsNull(entries);
            entries = jConf.GetAppConfigurationEntry("foo");
            Assert.Equal(1, entries.Length);
            AppConfigurationEntry entry = entries[0];

            Assert.Equal(AppConfigurationEntry.LoginModuleControlFlag.Required
                         , entry.GetControlFlag());
            Assert.Equal(krb5LoginModuleName, entry.GetLoginModuleName());
            IDictionary <string, object> options = entry.GetOptions();

            Assert.Equal("/some/location/foo.keytab", options["keyTab"]);
            Assert.Equal("foo/localhost", options["principal"]);
            Assert.Equal("true", options["useKeyTab"]);
            Assert.Equal("true", options["storeKey"]);
            Assert.Equal("false", options["useTicketCache"]);
            Assert.Equal("true", options["refreshKrb5Config"]);
            Assert.Equal(6, options.Count);
        }
Пример #2
0
        /// <exception cref="System.Exception"/>
        private string SetJaasConfiguration(Properties config)
        {
            string keytabFile = config.GetProperty(ZookeeperKerberosKeytab).Trim();

            if (keytabFile == null || keytabFile.Length == 0)
            {
                throw new ArgumentException(ZookeeperKerberosKeytab + " must be specified");
            }
            string principal = config.GetProperty(ZookeeperKerberosPrincipal).Trim();

            if (principal == null || principal.Length == 0)
            {
                throw new ArgumentException(ZookeeperKerberosPrincipal + " must be specified");
            }
            // This is equivalent to writing a jaas.conf file and setting the system
            // property, "java.security.auth.login.config", to point to it
            ZKSignerSecretProvider.JaasConfiguration jConf = new ZKSignerSecretProvider.JaasConfiguration
                                                                 (JaasLoginEntryName, principal, keytabFile);
            Configuration.SetConfiguration(jConf);
            return(principal.Split("[/@]")[0]);
        }