Spnego Keytab测试给出了Java安全异常 - 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.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大神给出的解决方案

我在login.conf中出错。

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

所需的分号不应该在那里!

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

如何在Java中以语言环境正确的顺序格式化日期和月份? - java

有没有一种方法可以用Java / Kotlin中的区域设置正确的格式格式化日和月(以紧凑格式)而不格式化年份?因此,对于英语,应为“ 9月20日”,而对于瑞典语为“ 9月20日”。为了进行比较,在Cocoa平台上,我可以执行以下操作(在Swift中):let formatter = DateFormatter() formatter.locale = Loc…

如何在JAVA中传递以逗号分隔的值作为函数参数的字符串 - java

我有一个可以接受任何数量的INTEGER参数的方法:pages(int,int...)此方法是选择PDF文件的某些页面。以以下字符串类型存储的书页:String pages = "1,2,3,6,9"; 我想将此字符串作为方法的参数看起来像:pages(1,2,3,6,9); java大神给出的解决方案 使用流可以很容易地做到这一点:St…

如何修改休眠的SQL查询? - java

我有点好奇,有没有办法修改hibernate的核心,以便我可以自定义生成的SQL query。例如,在生成的查询中添加功能以使用connect by prior(oracle)或我要自定义的任何其他子句。 java大神给出的解决方案 起初,这样的问题总是在我心中敲响警钟。你被警告了...AFAIK,hibernate使用所谓的dialects进行特定的优化。…

DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…