Центр приложений Worklight - интеграция с Active Directory
Я пытаюсь интегрировать IBM Worklight Application Center с AD. Он развернут в Websphere Liberty Profile на виртуальной машине Windows Server 2008 R2 Enterprise. Я использую документацию по этой ссылке: База знаний IBM
Мне удалось подключиться к AD для целей аутентификации с помощью этого конфига в server.xml:
<ldapRegistry id="ldap" realm="SampleLdapADRealm"
host="ad.btb.hr" port="389" ignoreCase="true"
baseDN="ou=BTB,dc=btb,dc=hr"
bindDN="<myBindDN>"
bindPassword="<myBindPW>"
ldapType="Microsoft Active Directory"
sslEnabled="false">
<activedFilters userFilter="(&(sAMAccountName=%v)(objectClass=user))"
groupFilter="(&(cn=%v)(objectcategory=group))"
userIdMap="user:sAMAccountName"
groupIdMap="*:cn"
groupMemberIdMap="memberOf:member">
</activedFilters>
<contextPool enabled="true" initialSize="1" maxSize="0" timeout="0s" waitTime="3000ms" preferredSize="3"/>
<ldapCache>
<attributesCache size="4000" timeout="1200s" enabled="true" sizeLimit="2000"/>
<searchResultsCache size="2000" timeout="600s" enabled="true" resultsSizeLimit="1000"/>
</ldapCache>
</ldapRegistry>
<!-- Begin of configuration added by IBM Worklight installer. -->
<!-- Declare the IBM Application Center Console application. -->
<application id="appcenterconsole" name="appcenterconsole" location="appcenterconsole.war" type="war">
<application-bnd>
<security-role name="appcenteradmin">
<group name="worklight-administrators"/>
</security-role>
<security-role name="appcenteruser">
<group name="worklight-users"/>
</security-role>
</application-bnd>
</application>
<!-- Declare the IBM Application Center Services application. -->
<application id="applicationcenter" name="applicationcenter" location="applicationcenter.war" type="war">
<application-bnd>
<security-role name="appcenteradmin">
<!-- <group name="appcentergroup"/> -->
<group name="worklight-administrators"/>
</security-role>
<security-role name="appcenteruser">
<group name="worklight-users"/>
</security-role>
</application-bnd>
<classloader delegation="parentLast">
<commonLibrary>
<fileset dir="${wlp.install.dir}/lib" includes="com.ibm.ws.crypto.passwordutil_1.0.1.jar"/>
</commonLibrary>
</classloader>
</application>
Затем я попытался настроить ACL, чтобы можно было включить пользователей и группы в часть "Управление пользователями и группами" Центра приложений, используя эту конфигурацию:
<jndiEntry jndiName="ibm.appcenter.ldap.active" value="true"/>
<jndiEntry jndiName="ibm.appcenter.ldap.connectionURL" value="ldap://ad.btb.hr"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.loginName" value="sAMAccountName"/>
<jndiEntry jndiName="ibm.appcenter.ldap.security.binddn" value="<myBindDN>"/>
<jndiEntry jndiName="ibm.appcenter.ldap.security.bindpwd" value="<myBindPW>"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.base" value="ou=BTB,dc=btb,dc=hr"/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.base" value="ou=BTB,dc=btb,dc=hr"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.displayName" value="displayName"/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.name" value="cn"/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.uniquemember" value="member"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.groupmembership" value="memberOf"/>
<jndiEntry jndiName="ibm.appcenter.ldap.cache.expiration.seconds" value="43200"/>
<jndiEntry jndiName="ibm.appcenter.ldap.user.filter" value='"(&(sAMAccountName=%v)(objectClass=user))"'/>
<jndiEntry jndiName="ibm.appcenter.ldap.group.filter" value='"(&(cn=%v)(objectcategory=group))"'/>
Теперь я получаю эту ошибку при доступе к ссылке "Пользователи / группы" в Центре приложений:
[24.10.14. 09: 14: 24: 379 CEST] 0000001b com.ibm.puremeap.services.MobileServices E {"id": "5b5c3b4c-cb1d-4094-8e84-b1fee1b31b35", "message": "FWLAC0004E: Невозможно получить доступ к серверу LDAP.", "productVersion": "6.2.0.00-20140613-0730" }
Что я пропустил?
2 ответа
Запись JNDI ibm.appcenter.ldap.user.displayName.filter отсутствует. Попробуйте, установив его.
Вы используете очень старую версию Worklight 6.2; обновить настройки, чтобы использовать последние.
Вы можете получить последнюю версию Worklight Studio в Eclipse> Справка> Eclipse Marketplace. Чтобы узнать об артефактах сервера, посетите веб-сайт IBM Fix Central.
Кроме того, вышеупомянутое содержит исправление для ошибки, которая может быть вашей. PI24446 ПОДКЛЮЧЕНИЕ К APPCENTER С ИМЕМ ВХОДА, ОТЛИЧАЮЩИМСЯ ОТ СЛУЧАЯ, ЧУВСТВИТЕЛЬНЫМ ИЗ ВХОДА ИМЯ, ОПРЕДЕЛЕННОЕ В LDAP РЕЗУЛЬТАТ ОШИБКИ
У меня была аналогичная проблема, исправленная путем добавления / изменения этих двух строк.
В моем случае это
uid
не
sAMAccountName
jndiEntry jndiName="ibm.appcenter.ldap.user.loginName" value="uid"
jndiEntry jndiName="ibm.appcenter.ldap.user.filter" value='"(&(sAMAccountName=%v)(objectClass=person))"'
Я использовал "person" как объектный класс, поскольку он упоминается в моей конфигурации реестра LDAP.
jndiEntry jndiName="ibm.appcenter.ldap.user.displayName.filter" value='"(&(cn=%v)(objectclass=person))"'
Групповой фильтр должен быть правильным, поскольку я использую
Objectcategory=group
jndiEntry jndiName="ibm.appcenter.ldap.group.filter" value='"(&(cn=%v)(objectcategory=group))"'/>
Вся информация, связанная с LDAP, может быть проверена с сервера AD.