Skip to content

Commit ad2a067

Browse files
committed
Updated jaas config
1 parent 5691df0 commit ad2a067

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

src/main/java/com/microsoft/sqlserver/jdbc/KerbAuthentication.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.util.logging.Level;
1414

1515
import javax.security.auth.Subject;
16-
import javax.security.auth.login.Configuration;
1716
import javax.security.auth.login.LoginContext;
1817
import javax.security.auth.login.LoginException;
1918

@@ -108,7 +107,7 @@ private void initAuthInit() throws SQLServerException {
108107

109108
if (null == currentSubject) {
110109
if (useDefaultJaas) {
111-
lc = new LoginContext(configName, null, callback, new JaasConfiguration(null));
110+
lc = new LoginContext(configName, null, callback);
112111
} else {
113112
lc = new LoginContext(configName, callback);
114113
}

src/test/java/com/microsoft/sqlserver/jdbc/KerberosTest.java

+38-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import java.util.HashMap;
1717
import java.util.Map;
1818

19-
2019
@Tag(Constants.kerberos)
2120
@RunWith(JUnitPlatform.class)
2221
public class KerberosTest extends AbstractTest {
@@ -34,11 +33,16 @@ public static void setupTests() throws Exception {
3433
* Configures JAAS for the test environment.
3534
*/
3635
private static void configureJaas() {
37-
AppConfigurationEntry kafkaClientConfigurationEntry = new AppConfigurationEntry(
36+
Map<String, String> options = new HashMap<>();
37+
options.put("useTicketCache", "true");
38+
options.put("renewTGT", "true");
39+
options.put("doNotPrompt", "false"); // Allow prompting for credentials if necessary
40+
41+
AppConfigurationEntry kerberosConfigurationEntry = new AppConfigurationEntry(
3842
"com.sun.security.auth.module.Krb5LoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
39-
new HashMap<>());
43+
options);
4044
Map<String, AppConfigurationEntry[]> configurationEntries = new HashMap<>();
41-
configurationEntries.put("SQLJDBCDriver", new AppConfigurationEntry[] {kafkaClientConfigurationEntry});
45+
configurationEntries.put("SQLJDBCDriver", new AppConfigurationEntry[] {kerberosConfigurationEntry});
4246
Configuration.setConfiguration(new InternalConfiguration(configurationEntries));
4347
}
4448

@@ -105,15 +109,42 @@ private static void createKerberosConnection(String connectionString) throws Exc
105109
}
106110
}
107111

112+
/**
113+
* Test to verify the Kerberos module used
114+
*/
115+
@Test
116+
public void testKerberosConnectionWithDefaultJaasConfig() {
117+
try {
118+
// Set a mock JAAS configuration using the existing method
119+
overwriteJaasConfig();
120+
121+
String connectionString = connectionStringKerberos + ";useDefaultJaasConfig=true;";
122+
createKerberosConnection(connectionString);
123+
124+
Configuration config = Configuration.getConfiguration();
125+
AppConfigurationEntry[] entries = config.getAppConfigurationEntry("CLIENT_CONTEXT_NAME");
126+
Assertions.assertNotNull(entries);
127+
Assertions.assertTrue(entries.length > 0);
128+
Assertions.assertEquals("com.sun.security.auth.module.Krb5LoginModule", entries[0].getLoginModuleName());
129+
} catch (Exception e) {
130+
Assertions.fail("Exception was thrown: " + e.getMessage());
131+
}
132+
}
133+
108134
/**
109135
* Overwrites the default JAAS config. Call before making a connection.
110136
*/
111137
private static void overwriteJaasConfig() {
112-
AppConfigurationEntry kafkaClientConfigurationEntry = new AppConfigurationEntry(
138+
Map<String, String> options = new HashMap<>();
139+
options.put("useTicketCache", "true");
140+
options.put("renewTGT", "true");
141+
options.put("doNotPrompt", "false"); // Allow prompting for credentials if necessary
142+
143+
AppConfigurationEntry kerberosConfigurationEntry = new AppConfigurationEntry(
113144
"com.sun.security.auth.module.Krb5LoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
114-
new HashMap<>());
145+
options);
115146
Map<String, AppConfigurationEntry[]> configurationEntries = new HashMap<>();
116-
configurationEntries.put("CLIENT_CONTEXT_NAME", new AppConfigurationEntry[] {kafkaClientConfigurationEntry});
147+
configurationEntries.put("CLIENT_CONTEXT_NAME", new AppConfigurationEntry[] {kerberosConfigurationEntry});
117148
Configuration.setConfiguration(new InternalConfiguration(configurationEntries));
118149
}
119150

0 commit comments

Comments
 (0)