Programmatic JAAS configuration
What's inside this article
⌄
- How to configure JAAS programmatically
- Java JAAS configuration code
- Programmatic JAAS setup
- Set JAAS login configuration Java
Sometimes you need to set java.security.auth.login.config property programmatically. Here is how you can do it, just modify LoginConfig class to satisfy your needs:
JaasConfigurationExample.class:
1import javax.security.auth.login.AppConfigurationEntry;
2import javax.security.auth.login.Configuration;
3import javax.security.auth.login.LoginContext;
4
5public class JaasConfigurationExample {
6
7 public void work() {
8 LoginConfig loginConfig = new LoginConfig(keyTabLocation, servicePrincipalName, debug);
9 LoginContext lc = new LoginContext("", subject, null, loginConfig);
10 }
11
12 private static class LoginConfig extends Configuration {
13 private String keyTabLocation;
14 private String servicePrincipalName;
15 private Boolean debug;
16
17 public LoginConfig(String keyTabLocation, String servicePrincipalName, Boolean debug) {
18 this.keyTabLocation = keyTabLocation;
19 this.servicePrincipalName = servicePrincipalName;
20 this.debug = debug;
21 }
22
23 @Override
24 public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
25 Map<String, String> options = new HashMap<>();
26 options.put("useKeyTab", "true");
27 options.put("keyTab", keyTabLocation);
28 options.put("principal", servicePrincipalName);
29 options.put("storeKey", "true");
30 options.put("doNotPrompt", "true");
31 if (debug) {
32 options.put("debug", "true");
33 }
34 options.put("isInitiator", "false");
35 return new AppConfigurationEntry[] {
36 new AppConfigurationEntry(
37 "com.sun.security.auth.module.Krb5LoginModule",
38 AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options)
39 };
40 }
41 }
42}