Java JBoss AS 7远程独立客户端身份验证
我在JBossAS7上部署了一个ear jboss-app.xmlJava 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>
<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");