Импортировать схемы по умолчанию WSO2 Identity Server в OpenLDAP

Я пытаюсь настроить сервер идентификации WSO2 с OpenLDAP в качестве основного хранилища пользователей. Я хотел бы добавить схемы ApacheDS, встроенные в Idp: wso2Person, identityPerson и scimPerson в OpenLDAP, но я не могу импортировать ни схему, ни файлы ldif wso2Person, identityPerson и scimPerson.

Можете ли вы привести пример того, как достичь этой цели?

Я пытаюсь импортировать файлы в новый OpenLDAP на Ubuntu Server 16 LTS с помощью ApacheDS Studio или других клиентов LDAP, но каждый раз, когда я пытаюсь импортировать файлы, выдается ошибка.

I.E .: запуск

sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f ou\=schema.ldif

сервер отвечает:

Сервер не желает выполнять работу (53) не имеет превосходных глобальных знаний

Или при попытке импортировать файл wso2Person.ldif

ldapadd -D ldap:/// -D "cn=admin,dc=example,dc=org" -x -W -f wso2Person.ldif

возникает следующая ошибка:

Недопустимый синтаксис (21) дополнительная информация: attributeTypes: значение # 0 недопустимо для синтаксиса


person AndyPower    schedule 09.05.2016    source источник


Ответы (2)


Нет необходимости использовать схему wso2Person. Вы можете использовать любую из схем, поддерживаемых внешним ldap (например, inetOrgPerson). Единственное, что вам нужно сделать, это сопоставление утверждений для атрибутов с существующими атрибутами в схеме openldap. Вы можете найти эти утверждения на вкладке configure-> Управление заявками в разделе «http://wso2.org/claims». Вы можете редактировать сопоставление утверждений [1] для каждого атрибута с существующими атрибутами с сервера ldap. Например: имя сопоставляется с атрибутом givenName в хранилище основного пользователя. Openldap также поддерживает тип атрибута "givenName". Таким образом, вам не нужно изменять эти атрибуты. Но несколько атрибутов, таких как «Фамилия», которые сопоставлены с «sn» в хранилище основного пользователя, отсутствуют в openldap по умолчанию, если правильный класс объекта не добавлен в группу пользователей. Например, я использовал displayName в качестве сопоставленного атрибута для вторичного хранилища пользователей. Вы можете увидеть, как редактировать утверждения, в прикрепленном изображении Claims.png (где NEWTEST - это имя в магазине scondary пользователя), чтобы добавить сопоставление утверждений. Таким образом, вам нужно будет сопоставить эти атрибуты с существующими атрибутами в схеме openldap.

[1] - https://docs.wso2.com/display/IS500/Editing+Claim+Dialects

person Rajith Roshan    schedule 30.05.2016

Во-первых: если вы используете конфигурацию OpenLdap по умолчанию в Ubuntu 16.04, вы должны использовать локальный инструмент из корневой учетной записи сервера. Например:

root@OpenLdap1:ldapadd -Y EXTERNAL -H ldapi:/// -f identityPerson.ldif

Вы можете видеть, что список доступа для cn = config:

# {0}config, config
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break

Во-вторых: вам нужно изменить файлы ldif, предоставленные wso2. В OpenLdap схемы представлены как отдельный объект LDAP, поэтому вместо модификации объекта вам нужно создать новую запись. Также есть одно различие в синтаксисе - вам следует заменить attributeTypes на olcAttributeTypes и objectClasses на olcobjectClasses. Ваш wso2Person.ldif выглядит так:

dn: cn=wso2Person,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: wso2Person
olcAttributeTypes: ( 1.3.6.1.4.1.37505.1.2
    NAME 'gender'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
....
olcAttributeTypes: ( 1.3.6.1.4.1.37505.1.13
    NAME 'prefferedLanguage'
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
olcobjectClasses: ( 1.3.6.1.4.1.37505.1.1
    NAME 'wso2Person'
    DESC 'wso2Person'
    SUP inetOrgPerson
    STRUCTURAL
    MAY  ( gender $ country $ nickName $ timeZone $ dateOfBirth $ role $ im $ url $ otherPhone $ privatePersonalIdentifier $ profileconfiguration $ prefferedLanguage) 
)

Также классы wso2 имеют структурные зависимости, поэтому порядок их добавления имеет значение:

ldapadd -Y EXTERNAL -H ldapi:/// -f wso2Person.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f scimPerson.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f identityPerson.ldif 
person Ričardas Sabaliauskas    schedule 14.07.2016