2015-10-29 1 views
0

У меня есть две группы пользователей - сотрудники и члены, сотрудники находятся на сервере LDAP, а члены находятся в файле свойств. Мне нужно настроить оба из них в одном домене безопасности, а это значит, что мне нужно получить аутентификацию из разных модулей входа - сотрудников из LdapExtLoginModule и членов модуля входа в UserRoles. Что-то вроде этого:Как настроить несколько модулей входа в одном домене безопасности в JBOSS EAP 6.3?

<security-domain name="EmpMem" cache-type="default"> 
    <authentication> 
     <login-module code="UsersRoles" flag="required"> 
      <module-option name="password-stacking" value="useFirstPass"/> 
      <module-option name="usersProperties" value="app-users.properties"/> 
      <module-option name="rolesProperties" value="app-roles.properties"/> 
     </login-module> 
     <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required"> 
      <module-option name="password-stacking" value="useFirstPass"/> 
      <module-option name="java.naming.provider.url" value="ldap://ha-adds-global.xxx.com:3268"/> 
      <module-option name="bindDN" value="CN=prodjbsvc,OU=ServiceAccounts,OU=NOPOL,dc=eagle,dc=xxx,dc=com"/> 
      <module-option name="bindCredential" value="[email protected]"/> 
      <module-option name="baseCtxDN" value="dc=eagle,dc=xxx,dc=com"/> 
      <module-option name="baseFilter" value="(sAMAccountName={0})"/> 
      <module-option name="rolesCtxDN" value="ou=COSAs,dc=eagle,dc=xxx,dc=com"/> 
      <module-option name="roleFilter" value="(sAMAccountName={0})"/> 
      <module-option name="roleAttributeID" value="memberOf"/> 
      <module-option name="roleAttributeIsDN" value="true"/> 
      <module-option name="roleNameAttributeID" value="cn"/> 
      <module-option name="roleRecursion" value="-1"/> 
      <module-option name="searchScope" value="SUBTREE_SCOPE"/> 
      <module-option name="allowEmptyPasswords" value="false"/> 
      <module-option name="java.naming.referral" value="follow"/> 
     </login-module> 
    </authentication> 
</security-domain> 

Я знаю, что есть модуль Логин Пароль называется Stacking, которые могут цепи несколько модулей входа в систему вместе, но выглядит как LdapExtLoginModule не поддерживает это? Пожалуйста, предложите способ сделать это.

Мои требования: Когда пользователь является сотрудником, он получает удостоверение подлинности с сервера LDAP и должен иметь возможность доступа к ресурсам сотрудников (только java-пакеты/классы), а когда пользователь является членом, он получает аутентификацию из файла свойств и должен иметь возможность доступа к ресурсам-членам (только java-пакеты/классы).

ответ

0

Если для ваших нужд достаточно LdapLoginModule вместо LdapExtLoginModule. Удержание паролей поддерживается этим LoginModule.

Однако, судя по вашему требованию я не думаю, что пароль Stacking это то, что вы ищете ...

Если предыдущий модуль, сконфигурированный для пароля штабелировании аутентифицировался пользователь, все остальные штабелировании модули будут считать пользователя аутентифицированным и только попытаться предоставить набор ролей для этапа авторизации.

Похоже, что пользователь будет либо сотрудником, либо членом? Если это так, используйте «достаточное количество» в качестве атрибута «flag» LoginModule

достаточно: модуль входа не требуется для успеха. Если это удается, управление немедленно возвращается в приложение. Если это не удается, аутентификация продолжается в стеке входа.

+0

Мне нужно использовать LdapExtLoginModule согласно требованию. Пользователь может иногда быть сотрудником и членом (будущие требования). –

+0

(Возможно тоже) простое решение для вашего будущего требования: если Employee является членом, он также сохраняет роль Member в LDAP с Employee ... поэтому файл свойства содержит только «чистые» члены ... если это не- go всегда есть возможность написать собственную реализацию LoginModule – tom

+0

Я не думаю, что смогу это сделать. Но можете ли вы предложить идею о том, как мне создать пользовательский модуль входа для моего требования? –

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