2009-09-16 32 views
14

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 
} 
+0

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! –

Trả lời

17

krb5.conf của bạn là sai. Đó là [libdefaults], không phải [libdefault].

Các vấn đề liên quan