From defa21dca72379bb2b31b12d115cea5c8e8b7347 Mon Sep 17 00:00:00 2001 From: Muskan Gupta <muskgupta@microsoft.com> Date: Thu, 23 Jan 2025 12:19:02 +0530 Subject: [PATCH] Logic to add config for loginContext(if-else) --- .../sqlserver/jdbc/KerbAuthentication.java | 8 +------ .../sqlserver/jdbc/KerberosTest.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/microsoft/sqlserver/jdbc/KerbAuthentication.java b/src/main/java/com/microsoft/sqlserver/jdbc/KerbAuthentication.java index d02238196..a17f99931 100644 --- a/src/main/java/com/microsoft/sqlserver/jdbc/KerbAuthentication.java +++ b/src/main/java/com/microsoft/sqlserver/jdbc/KerbAuthentication.java @@ -42,12 +42,6 @@ final class KerbAuthentication extends SSPIAuthentication { private boolean useDefaultNativeGSSCredential = false; private GSSContext peerContext = null; - static { - // Overrides the default JAAS configuration loader. - // This one will forward to the default one in all cases but the default configuration is empty. - Configuration.setConfiguration(new JaasConfiguration(Configuration.getConfiguration())); - } - /** * Initializes the Kerberos client security context * @@ -114,7 +108,7 @@ private void initAuthInit() throws SQLServerException { if (null == currentSubject) { if (useDefaultJaas) { - lc = new LoginContext(configName, null, callback, new JaasConfiguration(null)); + lc = new LoginContext(configName, null, callback, new JaasConfiguration(Configuration.getConfiguration())); } else { lc = new LoginContext(configName, callback); } diff --git a/src/test/java/com/microsoft/sqlserver/jdbc/KerberosTest.java b/src/test/java/com/microsoft/sqlserver/jdbc/KerberosTest.java index 47f0a9252..0c5a781a1 100644 --- a/src/test/java/com/microsoft/sqlserver/jdbc/KerberosTest.java +++ b/src/test/java/com/microsoft/sqlserver/jdbc/KerberosTest.java @@ -26,9 +26,32 @@ public class KerberosTest extends AbstractTest { @BeforeAll public static void setupTests() throws Exception { + setJaasConfiguration(); setConnection(); } + private static void setJaasConfiguration() { + AppConfigurationEntry[] entries = new AppConfigurationEntry[]{ + new AppConfigurationEntry( + "com.sun.security.auth.module.Krb5LoginModule", + AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, + new HashMap<String, Object>() {{ + put("useTicketCache", "true"); + put("renewTGT", "true"); + }} + ) + }; + Configuration.setConfiguration(new Configuration() { + @Override + public AppConfigurationEntry[] getAppConfigurationEntry(String name) { + if ("SQLJDBCDriver".equals(name)) { + return entries; + } + return null; + } + }); + } + @Test public void testUseDefaultJaasConfigConnectionStringPropertyTrue() throws Exception { String connectionStringUseDefaultJaasConfig = connectionStringKerberos + ";useDefaultJaasConfig=true;";