【问题标题】:Spnego keytab test gives a java security exceptionSpnego keytab 测试给出 java 安全异常
【发布时间】:2013-09-12 23:00:30
【问题描述】:

我无法运行以下程序:

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.jarHelloKeytab.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/

我收到此错误是怎么回事?

【问题讨论】:

    标签: java kerberos spnego


    【解决方案1】:

    我在 login.conf 中有错误。

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

    required后面的分号不应该有!

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多