2016-02-18 4 views
1

Я новичок в области аутентификации и безопасности, и я пытаюсь расширить механизм аутентификации своего приложения, которое в настоящее время предоставляет традиционную аутентификацию имени пользователя/пароля, чтобы предоставить пользователю возможность аутентификации через LDAP-сервер.Использование нескольких модулей входа в JBoss

В текущей реализации приложение использует j_security_check поток из API Сервера для аутентификации пользователя. standalone.xml файл Jboss имеет модуль входа, указывающий на myLoginModuleClass класс, который расширяет jboss.security.auth.spi.UsernamePasswordLoginModule.

<security-domain name="db-domain"> 
 
    <authentication> 
 
    <login-module code="myLoginModuleClass" flag="required" module="packageForClass"> 
 
     <module-option name="hashAlgorithm" value="SHA-256" /> 
 
     <module-option name="hashEncoding" value="base64" /> 
 
     <module-option name="password-stacking" value="useFirstPass" /> 
 
    </login-module> 
 
    </authentication> 
 
</security-domain>

Я добавил еще один логин-модуль под названием LDAP Войти модуль в отдельной безопасности.

<security-domain name="ldap-domain"> 
 
    <authentication> 
 
    <login-module code="LDAPLoginModule" flag="required" module="LDAPModulePackage"> 
 
     <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory" /> 
 
     <module-option name="java.naming.security.authentication" value="simple" /> 
 
     <module-option name="bindCredential" value="secret" /> 
 
     <module-option name="password-stacking" value="useFirstPass" /> 
 
    </login-module> 
 
    </authentication> 
 
</security-domain>

вопрос я в настоящее время сталкивается в следующем: JBoss-web.xml и web.xml проекта как указывает на существующий домен безопасности: DB-домена. И я могу указать только один домен безопасности. Вопрос: Как я могу программным образом сказать jboss указать конкретный класс входа на основе выбора пользователя, то есть, если пользователь решил пойти с ldap auth, вызывается класс LDAPLoginModule? Или есть ли другой лучший способ аутентификации в режиме микширования?

Спасибо заранее

ответ

0

Я помню, изучив по аналогичной проблеме года назад и не нашел решения. Обходной путь, который я применил, состоит в том, чтобы иметь 2 набора файлов jboss-web.xml, один из которых настроен на ваш db-домен и один с ldap-доменом. Когда безопасность LDAP должна быть отключена, вы просто запускаете скрипт для замены веб-xml на db-domain one и redeploy. Это было осуществимо, потому что требование было статическим, а не пользователем, основанным или динамическим.

+0

Привет, Спасибо за комментарий, к сожалению, в моем случае пользовательский ввод является динамическим и перераспределяет требуемый xml jboss перезагрузка, которую я не могу сделать – ACoder

+0

Тем временем я нашел работу. Я могу указать как модуль входа в единый домен безопасности, так и изменить флаг «требуется» на достаточное количество ». При этом безопасность jboss будет автоматически забирать логин в том порядке, в котором он настроен в файле standalone.xml, и останавливается всякий раз, когда логин успешный. – ACoder

+0

Рад, что вы нашли работу. Может быть полезно для меня в будущем. Спасибо за обмен. – Sampada

4

Между тем, я нашел работу вокруг. можно определить как модуль входа в одном домене безопасности и изменить флаг от «требуется» достаточно».

<security-domain name="common-domain"> 
 
    <authentication> 
 
    <login-module code="LDAPLoginModule" flag="sufficient" module="LDAPModulePackage"> 
 
     <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory" /> 
 
     <module-option name="java.naming.security.authentication" value="simple" /> 
 
     <module-option name="bindCredential" value="secret" /> 
 
     <module-option name="password-stacking" value="useFirstPass" /> 
 
    </login-module> 
 

 
    <login-module code="mydbLoginModuleClass" flag="sufficient" module="packageForClass"> 
 
     <module-option name="hashAlgorithm" value="SHA-256" /> 
 
     <module-option name="hashEncoding" value="base64" /> 
 
     <module-option name="password-stacking" value="useFirstPass" /> 
 
    </login-module> 
 

 
    </authentication> 
 
</security-domain>

Делая это в JBoss безопасности подберут входа в систему последовательно в заказ, который он сконфигурирован в файле standalone.xml (сначала ldap, а затем dblogin) и останавливается всякий раз, когда логин успешно завершен

Смежные вопросы