Я пытаюсь подключиться к серверу Db2 через среду Kerberos. Я использую DB2SimpleDataSource в своем коде, чтобы установить соединение с моим сервером DB2. Согласно моему нынешнему пониманию, если у меня есть Kerberos TGT, то мне просто нужно добавить два свойства в Datasource, SecurityMechanism и kerberosServerPrincipal. Ниже приведен код:
public static DB2BaseDataSource getDataSource() throws Exception {
DB2SimpleDataSource ds = new DB2SimpleDataSource();
ds.setPortNumber(port);
ds.setDatabaseName(dbname);
ds.setServerName(server);
ds.setSecurityMechanism(DB2BaseDataSource.KERBEROS_SECURITY);
ds.setKerberosServerPrincipal("user/server@REALM.COM");
ds.setDriverType(4);
return ds;
}
Затем следующий код, чтобы получить соединение:
DataSource ds = (DataSource) getDataSource();
Connection con = ds.getConnection();
Ниже приводится трассировка стека для ошибки, которую я получаю при попытке установить соединение.
Exception in thread "main" com.ibm.db2.jcc.am.SqlException: [jcc][t4][10262][11223][3.71.22] Unexpected Throwable caught: empty realm part not allowed. ERRORCODE=-4228, SQLSTATE=null
at com.ibm.db2.jcc.am.gd.a(gd.java:797)
at com.ibm.db2.jcc.am.gd.a(gd.java:66)
at com.ibm.db2.jcc.am.gd.a(gd.java:98)
at com.ibm.db2.jcc.t4.b.b(b.java:926)
at com.ibm.db2.jcc.t4.b.a(b.java:784)
at com.ibm.db2.jcc.t4.b.a(b.java:430)
at com.ibm.db2.jcc.t4.b.a(b.java:403)
at com.ibm.db2.jcc.t4.b.<init>(b.java:341)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:233)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:199)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:181)
at com.test.KerberosTest.main(KerberosTest.java:16)
Caused by: java.lang.IllegalArgumentException: empty realm part not allowed
at sun.security.krb5.Realm.parseRealmAtSeparator(Realm.java:133)
at sun.security.krb5.PrincipalName.<init>(PrincipalName.java:399)
at sun.security.krb5.PrincipalName.<init>(PrincipalName.java:471)
at sun.security.jgss.krb5.Krb5NameElement.getInstance(Krb5NameElement.java:114)
at sun.security.jgss.krb5.Krb5MechFactory.getNameElement(Krb5MechFactory.java:95)
at sun.security.jgss.GSSManagerImpl.getNameElement(GSSManagerImpl.java:203)
at sun.security.jgss.GSSNameImpl.getElement(GSSNameImpl.java:477)
at sun.security.jgss.GSSNameImpl.init(GSSNameImpl.java:201)
at sun.security.jgss.GSSNameImpl.<init>(GSSNameImpl.java:170)
at sun.security.jgss.GSSManagerImpl.createName(GSSManagerImpl.java:138)
at com.ibm.db2.jcc.am.je.b(je.java:133)
at com.ibm.db2.jcc.am.je.a(je.java:165)
at com.ibm.db2.jcc.t4.b.a(b.java:6578)
at com.ibm.db2.jcc.t4.b.b(b.java:868)
... 8 more
Если я использую имя пользователя и пароль в свойствах источника данных, он запрашивает файл конфигурации jaas. После предоставления, я все еще получаю ту же ошибку. Я был бы очень признателен за любую помощь по этому вопросу.