#kotlin #kerberos #unboundid-ldap-sdk
Вопрос:
Я пытаюсь использовать unboundid.ldapsdk
для поиска в каталоге ldap. Однако по какой-то причине я не могу выполнить привязку. Вот соответствующий код, который выполняет создание сеанса
val sslUtil = SSLUtil()
val factory: SocketFactory = sslUtil.createSSLSocketFactory()
val conn = LDAPConnection(factory, "<endpoint>", 636)
val gssapiProperties = GSSAPIBindRequestProperties(null as String?, null as String?)
gssapiProperties.setRealm("<realm>")
gssapiProperties.setKDCAddress("<realm>")
gssapiProperties.setEnableGSSAPIDebugging(true)
val bindRequest = GSSAPIBindRequest(gssapiProperties)
var bindResult: BindResult?
bindResult = conn.bind(bindRequest)
в результате возникает ошибка
Caused by: GSSException: Invalid name provided (Mechanism level: KrbException: Cannot locate default realm)
at sun.security.jgss.krb5.Krb5NameElement.getInstance(Krb5NameElement.java:129)
at sun.security.jgss.krb5.Krb5MechFactory.getNameElement(Krb5MechFactory.java:99)
at sun.security.jgss.GSSManagerImpl.getNameElement(GSSManagerImpl.java:197)
at sun.security.jgss.GSSNameImpl.getElement(GSSNameImpl.java:478)
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:132)
at com.sun.security.sasl.gsskerb.GssKrb5Client.<init>(GssKrb5Client.java:107)
Конфигурация kerberos находится по адресу /etc/krb5.conf
. Я явно определил область и адрес KDC, потому что думал, что это может решить проблему, но это та же ошибка с их явной настройкой или без нее.
Я работаю в системе Linux, и библиотека определена в maven
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
<version>6.0.0</version>
<scope>compile</scope>
</dependency>