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); }
/// <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]); }