2014-12-11 13 views
5

मैं अपने आराम एपीआई का पर्दाफाश करने के लिए जेट्टी एम्बेडेड सर्वर का उपयोग करने की कोशिश कर रहा हूं और अब मैं केर्बेरोज प्रमाणीकरण को कार्यान्वित करना चाहता हूं।केर्बेरोस प्रमाणीकरण के साथ एम्बेडेड जेट्टी सर्वर 9 का उपयोग कैसे करें?

targetName = HTTP/target.name.com 

मेरे krb5.ini:

[libdefaults] 
default_realm = HW.COM 
default_keytab_name = FILE:/path/to/target.name.com.keytab 
permitted_enctypes = aes128-cts aes256-cts arcfour-hmac-md5 
default_tgs_enctypes = aes128-cts aes256-cts arcfour-hmac-md5 
default_tkt_enctypes = aes128-cts aes256-cts arcfour-hmac-md5 

[realms] 
MY.COM= { 
    kdc = 12.13.14.222 #IP adress 
    admin_server = 12.13.14.222 # IP ADDRESS 
    default_domain = MY.COM 
} 

[domain_realm] 
my.com= MY.COM 
.my.com = MY.COM 

[appdefaults] 
autologin = true 
forwardable = true 

मेरे spnego.conf:

com.sun.security.jgss.initiate { 
    com.sun.security.auth.module.Krb5LoginModule required 
    principal="HTTP/[email protected]" 
    keyTab="/path/to/target.name.com.keytab" 
    useKeyTab=true 
    storeKey=true 
    debug=true 
    isInitiator=false; 
}; 

com.sun.security.jgss.accept { 
    com.sun.security.auth.module.Krb5LoginModule required 
    principal="HTTP/[email protected]" 
    useKeyTab=true 
    keyTab="/path/to/target.name.com.keytab" 
    storeKey=true 
    debug=true 
    isInitiator=false; 
}; 
यह मैं कैसे बना सकता हूँ SecurityHandler

String domainRealm = "MY.COM"; 

    Constraint constraint = new Constraint(); 
    constraint.setName(Constraint.__SPNEGO_AUTH); 
    constraint.setRoles(new String[]{domainRealm}); 
    constraint.setAuthenticate(true); 

    ConstraintMapping cm = new ConstraintMapping(); 
    cm.setConstraint(constraint); 
    cm.setPathSpec("/*"); 

    SpnegoLoginService loginService = new SpnegoLoginService(); 
    loginService.setConfig("/path/to/spnego.properties"); 
    loginService.setName(domainRealm); 

    ConstraintSecurityHandler sh = new ConstraintSecurityHandler(); 
    sh.setAuthenticator(new SpnegoAuthenticator()); 
    sh.setLoginService(loginService); 
    sh.setConstraintMappings(new ConstraintMapping[]{cm}); 
    sh.setRealmName(domainRealm); 

यह मेरा spnego.properties है

सिस्टम गुण सेट हैं:

System.setProperty("javax.security.auth.useSubjectCredsOnly", "false"); 
    System.setProperty("java.security.auth.login.config", "/path/to/spnego.conf"); 
    System.setProperty("java.security.krb5.conf", "/path/to/krb5.ini"); 

दुर्भाग्य से प्रमाणीकरण काम नहीं करता है। मैं SpnegoLoginService.login विधि डिबग करने के लिए कोशिश कर रहा हूँ और प्रवेश में विफल रहता है की वजह से

GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag) 

आप विचार कैसे सेटअप एम्बेडेड जेट्टी सर्वर Kerberos प्रमाणीकरण के साथ सही ढंग से काम करने के लिए किया है?

धन्यवाद

उत्तर

4

समस्या गलत keytab फ़ाइल में था

संबंधित मुद्दे