我正嘗試使用SASL連接到ldap服務器。我使用網址ldaps://ldap.example.com
進行連接,但服務器主機名爲host.example.com
。 ldap.example.com
是host.example.com
的cname。我的程序試圖獲取ldap/ldap.example.com
的服務票證,而不是執行反向DNS請求並獲取ldap/host.example.com
的票證。當我使用ldap://host.example.com
時,一切正常,但我更喜歡使用服務CNAME。使用GSSAPI連接到ldap。錯誤的服務負責人
還有就是我創建連接工廠代碼:
public DefaultConnectionFactory connectionFactory(){
return new DefaultConnectionFactory(connectionConfig());
}
private ConnectionConfig connectionConfig(){
final SaslConfig saslConfig = new SaslConfig();
saslConfig.setMechanism(Mechanism.GSSAPI);
final BindConnectionInitializer connectionInitializer = new BindConnectionInitializer();
connectionInitializer.setBindSaslConfig(saslConfig);
ConnectionConfig connConfig = new ConnectionConfig("ldaps://ldap.example.com");
connConfig.setConnectionInitializer(connectionInitializer);
return connConfig;
}
和的jaas.config:
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
keyTab="/etc/ldap.keytab"
principal="[email protected]"
storeKey=true
useKeyTab=true
debug=true
;
};
有什麼辦法來改變這種行爲?
感謝您的回答,但我不確定您是否正確理解了我。 'ldap.example.com'是'host.example.com'的cname(根據你的回答,我不應該,我認爲是這樣),'ldap @ EXAMPLE.COM'是我的客戶端主體,它擁有權限在ldap。什麼更好一切工作正常我使用'ldap:// host.example.com',但我只有ldap.example.com設置在我的tls證書。 – maxmati
我更新了我的回答,並附上關於證書角度的聲明,因爲我看到您對您的問題進行了一些編輯。這應該解決這個問題。我會考慮我的其他關於SPN的文章作爲「最佳實踐」。 –