A million thanks to everyone who answered and looked at my question.
After adding some system properties and a new conf file, finally I can connect to the MongoDB server. The updated code is
try { System.setProperty("java.security.krb5.conf","C:/mongodb/UnixKeytab/krb5.conf"); System.setProperty("java.security.krb5.realm","EXAMPLE.COM"); System.setProperty("java.security.krb5.kdc","example.com"); System.setProperty("javax.security.auth.useSubjectCredsOnly","false"); System.setProperty("java.security.auth.login.config","C:/mongodb/UnixKeytab/gss-jaas.conf"); List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>(); ServerAddress address = new ServerAddress(host, port); serverAddresses.add(address); List<MongoCredential> credentials = new ArrayList<MongoCredential>(); MongoCredential credential = MongoCredential.createGSSAPICredential(username); credentials.add(credential); MongoClient mongoClient1 = new MongoClient(serverAddresses, credentials); DB db = mongoClient1.getDB(database); } catch (UnknownHostException e) { e.printStackTrace(); }
My krb5.conf file looks below -
[libdefaults] default_realm = EXAMPLE.COM default_tkt_enctypes = des-cbc-md5 rc4-hmac default_tgs_enctypes = des-cbc-md5 rc4-hmac default_keytab_name = <keytab file path> [realms] EXAMPLE.COM = { kdc = example.com master_kdc = example.com default_domain = EXAMPLE.COM } INTRANET = { kdc = example.com master_kdc = example.com default_domain = example.com }
My gss-jaas.conf looks below -
com.sun.security.jgss.initiate { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true useTicketCache=false principal=" my-account@MY _REALM" doNotPrompt=true keyTab="path-to-my-keytab-file" debug=true;};
The code I posted works for me. Hope this works for others.
Krishna Kumar Chourasiya
source share