Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JBoss AS 7远程独立客户端身份验证_Java_Jboss_Ejb_Jboss7.x_Jaas - Fatal编程技术网

Java JBoss AS 7远程独立客户端身份验证

Java JBoss AS 7远程独立客户端身份验证,java,jboss,ejb,jboss7.x,jaas,Java,Jboss,Ejb,Jboss7.x,Jaas,我在JBossAS7上部署了一个ear jboss-app.xml <jboss-app xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="7.0" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee "> <security-domain>

我在JBossAS7上部署了一个ear jboss-app.xml

<jboss-app xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       version="7.0" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee ">
<security-domain>FooDomain</security-domain>
但我抓不到它

服务器日志(未剪切的重要部分):

当我尝试使用LoginContext时,服务器上什么也没发生。 配置

public class DefaultJassConfiguration extends Configuration {
@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
    Map options = new HashMap();
    options.put("debug", true);
    AppConfigurationEntry[] entries = {
            new AppConfigurationEntry("org.jboss.security.ClientLoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options)
    };
    return entries;
}
}
试验

也许LoginContext不知道服务器地址?我想补充一点

System.setProperty("java.naming.provider.url", "remote://10.10.1.18:4447");
但没有效果

如何使LoginContext工作?或者如何抓住SaslException? 我认为用方法总是返回真,并在登录后调用它,但看起来很难看。
另外,我为我的英语感到抱歉(这让我有点害羞)

ClientLoginModule当前在AS7上不受支持-登录模块所做的只是将用户名和密码与本地线程关联,它不执行任何真正的身份验证


关于InitialContext,当您尝试使用它时,您应该会看到抛出异常。

ClientLoginModule当前在AS7上不受支持-登录模块所做的只是将用户名和密码与本地线程关联,它不执行任何真正的身份验证


关于InitialContext,当您尝试使用它时,应该会看到抛出的异常。

您想捕获客户端上的异常吗?您可以尝试扩展安全模块类,并将安全检查代码包装在try/catch中。以防您得到一个异常,将其抛出回客户端。我只是希望这个异常不会被进一步抑制。对于安全模块类,我指的是DatabaseServerLoginModule谢谢,但我想知道为什么LoginContext不起作用。JBossAS 7不推荐使用它?您找到关于LoginContext的答案了吗?我正在尝试将类似的代码从JBoss5迁移到JBoss7。谢谢。您想捕获客户端上的异常,对吗?您可以尝试扩展安全模块类,并将安全检查代码包装在try/catch中。以防您得到一个异常,将其抛出回客户端。我只是希望这个异常不会被进一步抑制。对于安全模块类,我指的是DatabaseServerLoginModule谢谢,但我想知道为什么LoginContext不起作用。JBossAS 7不推荐使用它?您找到关于LoginContext的答案了吗?我正在尝试将类似的代码从JBoss5迁移到JBoss7。非常感谢。
javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
TRACE [DatabaseServerLoginModule] initialize
TRACE [DatabaseServerLoginModule] Security domain: FooDomain
TRACE [DatabaseServerLoginModule] DatabaseServerLoginModule, dsJndiName=java:/MyDS
TRACE [DatabaseServerLoginModule] principalsQuery=select password from users where user_id=?
TRACE [DatabaseServerLoginModule] rolesQuery=select role, 'Roles' from roles where user_id=?
TRACE [DatabaseServerLoginModule] suspendResume=true
TRACE [DatabaseServerLoginModule] login
TRACE [DatabaseServerLoginModule] suspendAnyTransaction
TRACE [DatabaseServerLoginModule] Excuting query: select password from users where user_id=?, with username: test
TRACE [DatabaseServerLoginModule] Obtained user password
TRACE [DatabaseServerLoginModule] resumeAnyTransaction
DEBUG [DatabaseServerLoginModule] Bad password for username=test
TRACE [DatabaseServerLoginModule] abort
public class DefaultJassConfiguration extends Configuration {
@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
    Map options = new HashMap();
    options.put("debug", true);
    AppConfigurationEntry[] entries = {
            new AppConfigurationEntry("org.jboss.security.ClientLoginModule", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options)
    };
    return entries;
}
}
Configuration.setConfiguration(new DefaultJassConfiguration());
try {
        LoginContext lc = new LoginContext("FooDomain", new UsernamePasswordHandler("test", "test".toCharArray()));
        lc.login();
        System.out.println(lc.getSubject());
    } catch (LoginException e) {
        e.printStackTrace();
    }
System.setProperty("java.naming.provider.url", "remote://10.10.1.18:4447");