2013-09-12 3 views
2

Я не могу получить следующую программу бегущегоSPNEGO Keytab тест дает Exception безопасности Java

import java.net.URL; 

import net.sourceforge.spnego.SpnegoHttpURLConnection; 

public class HelloKeytab { 

    public static void main(final String[] args) throws Exception { 
     System.setProperty("java.security.krb5.conf", "krb5.conf"); 
     System.setProperty("sun.security.krb5.debug", "true"); 
     System.setProperty("java.security.auth.login.config", "login.conf"); 

     SpnegoHttpURLConnection spnego = null; 

     try { 
      spnego = new SpnegoHttpURLConnection("spnego-client"); 
      spnego.connect(new URL("http://as1.test.local/hello_spnego.jsp")); 

      System.out.println("HTTP Status Code: " 
        + spnego.getResponseCode()); 

      System.out.println("HTTP Status Message: " 
        + spnego.getResponseMessage()); 

     } finally { 
      if (null != spnego) { 
       spnego.disconnect(); 
      } 
     } 
    } 
} 

я установил JDK7 и установить переменную окружения JAVA_HOME в качестве администратора. Я работаю на компьютере под управлением Windows XP как обычный пользователь домена во время компиляции и запуска.

У меня есть spnego-r7.jar в том же каталоге, что и HelloKeytab.java и я скомпилирован с:

javac -cp .;spnego-r7.jar HelloKeytab.java 

, который успешно создает класс.

При запуске программы с:

java -cp .;spengo-r7.jar HelloKeytab 

Я получаю следующее сообщение об ошибке:

Exception in thread "main" java.lang.SecurityException: Configuration Error: 
     Line 2: expected [controlFlag] 
     at com.sun.security.auth.login.ConfigFile.<init>(Unknown Source) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 

     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 

     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou 
rce) 
     at java.lang.reflect.Constructor.newInstance(Unknown Source) 
     at java.lang.Class.newInstance(Unknown Source) 
     at javax.security.auth.login.Configuration$3.run(Unknown Source) 
     at javax.security.auth.login.Configuration$3.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.login.Configuration.getConfiguration(Unknown Sour 
ce) 
     at javax.security.auth.login.LoginContext$1.run(Unknown Source) 
     at javax.security.auth.login.LoginContext$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.login.LoginContext.init(Unknown Source) 
     at javax.security.auth.login.LoginContext.<init>(Unknown Source) 
     at net.sourceforge.spnego.SpnegoHttpURLConnection.<init>(SpnegoHttpURLCo 
nnection.java:206) 
     at HelloKeytab.main(HelloKeytab.java:15) 
Caused by: java.io.IOException: Configuration Error: 
     Line 2: expected [controlFlag] 
     at com.sun.security.auth.login.ConfigFile.match(Unknown Source) 
     at com.sun.security.auth.login.ConfigFile.parseLoginEntry(Unknown Source 
) 
     at com.sun.security.auth.login.ConfigFile.readConfig(Unknown Source) 
     at com.sun.security.auth.login.ConfigFile.init(Unknown Source) 
     at com.sun.security.auth.login.ConfigFile.init(Unknown Source) 
     ... 17 more 

spnego-r7.jar можно найти здесь: http://sourceforge.net/projects/spnego/files/

Что не так, что я получаю эта ошибка?

ответ

5

У меня была ошибка в login.conf.

spnego-client { 
    com.sun.security.auth.module.Krb5LoginModule required; 
    storeKey=true 
    useKeyTab=true 
    keyTab="file:///C:/sys-spn.keytab" 
    principal=sys-spn; 
}; 

Точка с запятой после этого не должна быть там!

Смежные вопросы