JBoss AS 7 аутентификация удаленного автономного клиентаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JBoss AS 7 аутентификация удаленного автономного клиента

Сообщение Anonymous »

Я немного развернул JBoss AS7 с помощью
jboss-app.xml

Код: Выделить всё

FooDomain


В Standalone.xml у меня есть
Я могу выполнить поиск ejb из автономного клиента, и аутентификация пройдет успешно, если я использую такой код:

Код: Выделить всё

final Hashtable  p = new Hashtable();
p.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
p.put(Context.SECURITY_PRINCIPAL, username);
p.put(Context.SECURITY_CREDENTIALS, password);
p.put("jboss.naming.client.ejb.context", true);
p.put(Context.PROVIDER_URL, "remote://10.10.1.18:4447");
p.put("jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT", "false");
p.put(Context.INITIAL_CONTEXT_FACTORY, org.jboss.naming.remote.client.InitialContextFactory.class.getName());
context = new InitialContext(p);
Проблема в том, что если я введу неправильные учетные данные, я увижу это в консоли отладки

Код: Выделить всё

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
Когда я пытаюсь использовать 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;
}
}
Тест

Код: Выделить всё

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();
}
Возможно, LoginContext не знает адреса сервера? Я пытаюсь добавить

Код: Выделить всё

System.setProperty("java.naming.provider.url", "remote://10.10.1.18:4447");
но безрезультатно.

Как заставить LoginContext работать? Или как перехватить SaslException?
Я подумываю сделать какой-нибудь фиктивный компонент, метод которого всегда будет возвращать true, и вызывать его после входа в систему, но это выглядит некрасиво.

P.S. Извините за мой английский (я немного стесняюсь)

Подробнее здесь: https://stackoverflow.com/questions/104 ... lient-auth
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»