Vui lòng giúp tôi về một vấn đề về Java + kerberos. Tôi có một chương trình Java đơn giản để xác thực với Windows Active Directory bằng Kerberos. Mã java sau hoạt động tốt mà không cần bất kỳ vấn đề và in đúng-Xác thực Java và Kerberos krb5.conf so với System.setProperty
public class KerberosAuthenticator {
public static void main(String[] args) {
String jaasConfigFilePath = "/myDir/jaas.conf";
System.setProperty("java.security.auth.login.config", jaasConfigFilePath);
System.setProperty("java.security.krb5.realm", "ENG.TEST.COM");
System.setProperty("java.security.krb5.kdc","winsvr2003r2.eng.test.com");
boolean success = auth.KerberosAuthenticator.authenticate("testprincipal", "testpass");
System.out.println(success);
}
}
Bue khi tôi chỉ định đường dẫn đến tập tin krb5.conf thay vì bằng tay xác định lĩnh vực và kdc, nó lỗi ra nói "tên vương quốc Null (601) - lĩnh vực mặc định không được chỉ định ". Sau đây là số-
public class KerberosAuthenticator {
public static void main(String[] args) {
String jaasConfigFilePath = "/myDir/jaas.conf";
System.setProperty("java.security.auth.login.config", jaasConfigFilePath);
String krb5ConfigFilePath = "/etc/krb5/krb5.conf";
System.setProperty("java.security.krb5.conf", krb5ConfigFilePath);
boolean success = auth.KerberosAuthenticator.authenticate("testprincipal", "testpass");
System.out.println(success);
}
}
Nội dung krb5.conf là như sau-
[libdefault]
default_realm = ENG.TEST.COM
[realms]
ENG.TEST.COM = {
kdc = winsvr2003r2.eng.test.com
kpasswd_server = winsvr2003r2.eng.test.com
admin_server = winsvr2003r2.eng.test.com
kpasswd_protocol = SET_CHANGE
}
[domain_realm]
.eng.test.com = ENG.TEST.COM
eng.test.com = ENG.TEST.COM
[logging]
default = FILE:/var/krb5/kdc.log
kdc = FILE:/var/krb5/kdc.log
kdc_rotate = {
period = 1d
versions = 10
}
[appdefaults]
kinit = {
renewable = true
forwardable = true
}
Tôi không biết câu trả lời cho câu hỏi của bạn, nhưng nếu tôi ở trong giày của bạn, tôi sẽ sử dụng trình gỡ lỗi của IDE để bước vào 'KerberosAuthenticator' để xác định lý do tại sao nó không nhận được vùng mặc định. Chúc may mắn! –