Работа с атрибутами LDAP


Member Manager преобразует атрибуты, применяемые в объектах Java, представляющих пользователей и группы, в атрибуты базового хранилища данных. Если роль базового хранилища играет LDAP, то преобразование атрибутов Member Manager в атрибуты LDAP выполняется в соответствии с правилами, заданными в одном из перечисленных ниже файлов. Эти файлы представляют собой только примеры соответствующих конфигураций. Во время настройки WebSphere Portal выбранный файл изменяется и копируется в <каталог-wp>/shared/app/wmm/wmm.xml

Например, если вы применяете конфигурацию только с LDAP и в качестве хранилища данных LDAP используется IBM Directory Server, то в файле wmm.xml будет запись configurationFile="<каталог-wp>/wmm/wmmLDAPServerAttributes.xml. Таким образом, для установления соответствия будет применяться файл <каталог-wp>/wmm/wmmLDAPServerAttributes.xml Для некоторых атрибутов LDAP не предусмотрены соответствующие атрибуты элементов, поэтому по умолчанию они отсутствуют в объектах Java. Некоторые атрибуты объектов Java могут храниться в базе данных Lookaside, а не в каталоге LDAP. Вы можете изменять набор атрибутов в соответствии с требованиями своей конфигурации путем применения дополнительных атрибутов из базового хранилища LDAP, либо путем добавления новых атрибутов. Для работы с новыми атрибутами LDAP вы можете добавить новые записи соответствия в файл wmmLDAPServerAttributes.xml

Если вы изменили один из файлов wmm_*.xml или wmm_LDAP_*.xml, то необходимо скопировать измененный файл в следующие каталоги:

Для добавления новых атрибутов в пользовательский профайл требуется выполнить более сложную процедуру. Если применяется только база данных, то необходимо добавить определения новых атрибутов в таблицы базы данных, описывающие набор атрибутов. Если конфигурация включает как LDAP, так и Lookaside, определение атрибутов выполняется в Lookaside. При определении нового атрибута на сервере LDAP необходимо добавить определение этого атрибута в базу данных. Для этого добавьте правило преобразования этого атрибута в файл wmmLDAPServerAttributes_XXX.xml

При определении правил преобразования атрибутов LDAP в атрибуты Member Manager руководствуйтесь следующим шаблоном:

  <attributeMap wmmAttributeName="extId" applicableMemberTypes="Person;Group;Organization;OrganizationalUnit"
        pluginAttributeName="ibm-appUUID" dataType="String" multiValued="false" readOnly="true" />
- <!--  Определение атрибута LDAP для хранения членов статической группы  -->
- <!--  По умолчанию атрибут членов в IBM
Directory Server не подлежит изменению, поэтому определите значение по
умолчанию "uid=dummy" -->
  <attributeMap wmmAttributeName="groupMember" pluginAttributeName="member"
        applicableMemberTypes="Group" dataType="String" valueLength="1024" multiValued="true" defaultValue="uid=dummy" />
- <!--  Определение атрибута LDAP для хранения запросов динамической группы  -->
  <attributeMap wmmAttributeName="groupMemberURL" pluginAttributeName="memberURL"
        applicableMemberTypes="Group" dataType="String" valueLength="1024" multiValued="true" />
- <!--  * * * * *  Общие атрибуты схемы * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * -->
  <attributeMap wmmAttributeName="uid" pluginAttributeName="uid" applicableMemberTypes="Person" requiredMemberTypes="Person" dataType="String" valueLength="256" multiValued="false" /> 
  <attributeMap wmmAttributeName="sn" pluginAttributeName="sn" applicableMemberTypes="Person" requiredMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="givenName" pluginAttributeName="givenName" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="initials" pluginAttributeName="initials" applicableMemberTypes="Person" dataType="String" valueLength="20" multiValued="true" />
  <attributeMap wmmAttributeName="ibm-primaryEmail" pluginAttributeName="mail" applicableMemberTypes="Person" dataType="String" valueLength="256" multiValued="false" /> 
  <attributeMap wmmAttributeName="displayName" pluginAttributeName="displayName" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="preferredLanguage" pluginAttributeName="preferredLanguage" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="false" /> 
  <attributeMap wmmAttributeName="o" pluginAttributeName="o" applicableMemberTypes="Organization" requiredMemberTypes="Organization" dataType="String" valueLength="128" multiValued="false" />
  <attributeMap wmmAttributeName="ou" pluginAttributeName="ou" applicableMemberTypes="OrganizationalUnit" requiredMemberTypes="OrganizationalUnit" dataType="String" valueLength="128" multiValued="false" />
  <attributeMap wmmAttributeName="cn" pluginAttributeName="cn" applicableMemberTypes="Person;Group" requiredMemberTypes="Group" dataType="String" valueLength="256" multiValued="false" />
  <attributeMap wmmAttributeName="description" pluginAttributeName="description" applicableMemberTypes="Person;Group;Organization;OrganizationalUnit" dataType="String" valueLength="1024" multiValued="true" />
  <attributeMap wmmAttributeName="userPassword" pluginAttributeName="userPassword" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="false" />
- <!-- Атрибут доступен только для чтения  -->
  <attributeMap wmmAttributeName="createTimestamp" pluginAttributeName="createTimestamp" applicableMemberTypes="Person;Group;Organization;OrganizationalUnit" dataType="Timestamp" multiValued="false" readOnly="true" />
- <!-- Атрибут доступен только для чтения  -->
  <attributeMap wmmAttributeName="modifyTimestamp" pluginAttributeName="modifyTimestamp" applicableMemberTypes="Person;Group;Organization;OrganizationalUnit" dataType="Timestamp" multiValued="false" readOnly="true" /> 
  <attributeMap wmmAttributeName="jpegPhoto" pluginAttributeName="jpegPhoto" applicableMemberTypes="Person" dataType="ByteArray" valueLength="250000" multiValued="true" />
  <attributeMap wmmAttributeName="labeledURI" pluginAttributeName="labeledURI" applicableMemberTypes="Person" dataType="Object" classname="java.lang.String" multiValued="true" /> 
  <attributeMap wmmAttributeName="carLicense" pluginAttributeName="carLicense" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="telephoneNumber" pluginAttributeName="telephoneNumber" applicableMemberTypes="Person" dataType="String" valueLength="32" multiValued="true" /> 
  <attributeMap wmmAttributeName="facsimileTelephoneNumber" pluginAttributeName="facsimileTelephoneNumber" applicableMemberTypes="Person" dataType="String" valueLength="32" multiValued="true" /> 
  <attributeMap wmmAttributeName="pager" pluginAttributeName="pager" applicableMemberTypes="Person" dataType="String" valueLength="32" multiValued="true" />
  <attributeMap wmmAttributeName="mobile" pluginAttributeName="mobile" applicableMemberTypes="Person" dataType="String" valueLength="32" multiValued="true" />
  <attributeMap wmmAttributeName="homePostalAddress" pluginAttributeName="homePostalAddress" applicableMemberTypes="Person" dataType="String" valueLength="500" multiValued="true" /> 
  <attributeMap wmmAttributeName="postalAddress" pluginAttributeName="postalAddress" applicableMemberTypes="Person" dataType="String" valueLength="500" multiValued="true" />
  <attributeMap wmmAttributeName="roomNumber" pluginAttributeName="roomNumber" applicableMemberTypes="Person" dataType="String" valueLength="256" multiValued="true" />
  <attributeMap wmmAttributeName="localityName" pluginAttributeName="localityName" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" /> 
  <attributeMap wmmAttributeName="stateOrProvinceName" pluginAttributeName="stateOrProvinceName" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" /> 
  <attributeMap wmmAttributeName="street" pluginAttributeName="street" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="postalCode" pluginAttributeName="postalCode" applicableMemberTypes="Person" dataType="String" valueLength="40" multiValued="true" /> 
  <attributeMap wmmAttributeName"employeeNumber" pluginAttributeName="employeeNumber" applicableMemberTypes="Person" dataType="String" valueLength="20" multiValued="false" />
  <attributeMap wmmAttributeName="employeeType" pluginAttributeName="employeeType" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="manager" pluginAttributeName="manager" applicableMemberTypes="Person" dataType="MemberIdentifier" multiValued="true" />
  <attributeMap wmmAttributeName="secretary" pluginAttributeName="secretary" applicableMemberTypes="Person" dataType="MemberIdentifier" multiValued="true" />
  <attributeMap wmmAttributeName="businessCategory" pluginAttributeName="businessCategory" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="departmentNumber" pluginAttributeName="departmentNumber" applicableMemberTypes="Person" dataType="String" valueLength="128" multiValued="true" />
  <attributeMap wmmAttributeName="seeAlso" pluginAttributeName="seeAlso" applicableMemberTypes="Person" dataType="MemberIdentifier" multiValued="true" />
  </repositoryAttributes>

В среде IBM Directory Server приложение Member Manager может создавать фиктивную запись о члене группы при создании этой группы. Для настройки фиктивной записи о члене группы укажите значение "defaultValue" в элементе attributeMap атрибута "groupMember" в файле PortalServer/wmm/wmmLDAPServerAttributes_XXX.xml, как показано ниже:

<attributeMap        wmmAttributeName="groupMember"
                                        pluginAttributeName="uniqueMember"
                                        applicableMemberTypes="Group"
                                        dataType="String"
                                        valueLength="1000" 
                                        multiValued="true"
                                        defaultValue="uid=dummy"
                                        readOnly="false"/> 

Критерий поиска в портлетах

По умолчанию функция поиска в портлетах позволяет использовать в критерии поиска все атрибуты Member Manager, даже если они отсутствуют в каталоге LDAP. При выполнении поиска по атрибуту, отсутствующему в каталоге LDAP, возвращается пустой список результатов поиска. Для устранения этой неполадки необходимо ограничить поиск только теми атрибутами Member Manager, которые существуют в каталоге LDAP.

Для этого необходимо отредактировать файл каталог-wp/wmm/wmmLDAPAttributes.xml Добавьте в определение attributeMap атрибут description с содержимым [wps:hide], выделенный ниже полужирным шрифтом:

        <attributeMap   wmmAttributeName="givenName"
                        pluginAttributeName="givenName"
                        applicableMemberTypes="Person"                  
                        dataType="String" 
                        valueLength="128" 
                        description="[wps:hide]"
                        multiValued="true" />

Создание кэша группы в LDAP

Кэш группы используется для временного хранения имен, отношений членства и поддерживаемых атрибутов всех групп, находящихся в области действия Member Manager (в узлах Member Manager, указанных в <каталог_wps>/shared/app/wmm/wmm.xml).

Использования кэша групп в LDAP может значительно ускорить выполнение операций, связанных с LDAP, например процесса входа в портал или операций портлета Управление доступом пользователей и групп.

Если вы продолжаете использовать старый файл wmm.xml из Member Manager 5.0 или Member Manager 5.0.2, то эта опция будет недоступна. Для включения и настройки кэша групп LDAP необходимо добавить в файл wmm.xml несколько новых параметров.

Для создания кэша групп LDAP задайте следующие значения атрибутов в файле wmm.xml. Если вы работаете в кластерной среде, эти атрибуты необходимо задать в каждой из систем.

    <ldapRepository name="wmmLDAP"
           UUID="LDAP1"
           adapterClassName="com.ibm.ws.wmm.ldap.ibmdir.IBMDirectoryAdapterImpl"
           supportDynamicAttributes="false"
           configurationFile="wmm/xml/wmmLDAPAttributes_IDS_ENTRYUUID.xml" 
           wmmGenerateExtId="false"
           supportGetPersonByAccountName="true"               
           profileRepositoryForGroups="LDAP1"
           supportTransactions="false"
           adminId="cn=root"
           adminPassword="ibm"
           ldapHost="localhost"
           ldapPort="389"
           ldapTimeOut="6000"
           ldapAuthentication="SIMPLE"
           ldapType="0"
           
           cacheGroups="true"
           groupCacheRefreshInterval="600"

           attributesCacheSize="2000"
           attributesCacheTimeOut="600"

           namesCacheSize="2000"
           namesCacheTimeOut="300"

           cachesDiskOffLoad="false"
           serverTTLAttribute="ttl"
           >
Атрибут Значение
cacheGroups Указывает, следует ли выполнять кэширование членства и атрибутов группы. Для включения Кэша групп этот параметр должен быть равен true. Если данный параметр не указан, используется значение по умолчанию, равное false.
groupCacheRefreshInterval (Необязательно) Задает частоту обновления Кэша групп. Измеряется в секундах. Если данный параметр не указан, используется значение по умолчанию, равное 600 секундам.
attributesCacheSize Задает размер Кэша атрибутов. Кэш атрибутов используется для кэширования результатов запросов LDAP getAttributes. Использование Кэша атрибутов позволяет повысить производительность API getMember Member Manager, что ускоряет процедуру входа в портал. Если данный параметр не указан или его значение равно 0, Кэш атрибутов не используется.
attributesCacheTimeOut (Необязательно) Время хранения атрибутов в Кэше атрибутов. Измеряется в секундах. Значение по умолчанию составляет 600 секунд.
namesCacheSize Задает размер Кэша имен. Кэш имен используется для кэширования результатов поисковых запросов LDAP. Использование Кэша имен позволяет повысить производительность API Member Manager, в которых выполняется поиск. Примером может служить API Поиск. Если данный параметр не указан или его значение равно 0, Кэш имен не используется.
namesCacheTimeOut (Необязательно) Время хранения результатов поиска в Кэше имен. Измеряется в секундах. Значение по умолчанию составляет 600 секунд.
cachesDiskOffLoad (Необязательно) Определяет, следует ли выгружать кэш на жесткий диск. Этот параметр влияет и на кэш имен, и на кэш атрибутов. По умолчанию, когда кэш заполняется, хранимые в нем записи вытесняются новыми. Если опция cachesDiskOffLoad включена, то вытесняемые из кэша записи переносятся на диск на случай, если они понадобятся в будущем.
serverTTLAttribute (Необязательно) Задает имя атрибута ttl, поддерживаемого сервером LDAP. По умолчанию атрибуты из кэша атрибутов удаляются через время, определенное параметром attributesCacheTimeOut. Если сервер LDAP поддерживает атрибут ttl (TimeToLive), то Member Manager будет использовать значение этого атрибута ttl (если он задан) для определения времени хранения в Кэше атрибутов. Это позволяет задать время, в течение которого информацию следует хранить в кэше, с сервера.

Связанная информация


Library | Support | Terms of use | Feedback
Information Center last updated: Friday, November 19, 2004
IBM WebSphere Portal for Multiplatforms 5.1 | (c) Copyright IBM Corporation 2000, 2004