Быстрый старт#

В данном разделе описаны примеры подключения и синхронизации внешних ресурсов с IDM. Эти инструкции предназначены для разработчиков, которым нужно подключить свою систему к IDM.

Пререквизиты#

Для выполнения примеров понадобятся:

  • Развернутая инсталляция IDM (подробнее смотрите в Руководстве по установке);

  • Источник данных об аккаунтах в формате CSV. Для выполнения руководства можно воспользоваться следующим примером:

    "empno","firstname","lastname","password"
    "001","Alice","Anderson","qwe123"
    "002","Bob","Brown","qwe123"
    "003","Carol","Cooper","qwe123"
    "004","David","Davies","qwe123"
    "005","Erin","Evans","qwe123"
    "006","Frank","Fox","qwe123"
    "007","Goerge","Green","qwe123"
    "008","Harry","Harris","qwe123"
    "009","Isabella","Irvine","qwe123"
    "010","Jack","Jones","qwe123"
    "011","Kate","Knowles","qwe123"
    "012","Lily","Lewis","qwe123"
    "013","Max","Morgan","qwe123"
    "014","Nathan","Newman","qwe123"
    "015","Oliver","Owen","qwe123"
    "016","Peter","Phillips","qwe123"
    "017","Quentin","Quinn","qwe123"
    "018","Roger","Russell","qwe123"
    "019","Sophia","Simpson","qwe123"
    "020","Thomas","Turner","qwe123"
    "021","Uma","Underhill","qwe123"
    "022","Violet","Vickers","qwe123"
    "023","William","Walker","qwe123"
    "024","Xenia","Xanadu","qwe123"
    "025","Yasmine","Young","qwe123"
    "026","Zed","Zimmerman","qwe123"
    
  • Целевая система, аккаунтами в которой будет управлять IDM. В примерах используется простой сервер OpenLDAP;

  • Опционально - IDE для работы с XML-файлами.

Подключение ресурса и импорт данных#

Первое, что нужно сделать для начала работы с IDM — создать учетные карточки пользователей в IDM. Этом можно сделать вручную, но проще, быстрее и реалистичнее будет импортировать готовый список из, например, кадровой системы.

Для импорта данных из CSV-файла необходимо подключить его как ресурс IDM. Для этого нужно создать конфигурационную схему ресурса IDM. Схему ресурса можно составлять на XML, YAML или JSON. Схема ресурса определяет параметры подключения IDM к источнику данных, корреляцию атрибутов учетной записи в источнике к атрибутам юзера IDM, настройки политик, применяемых к учетным записям и действия при синхронизации данных между источником и IDM. Подробнее о составлении схемы и ее элементах вы можете узнать в разделе Конфигурирование ресурса Руководства для операторов.

В рамках данного примера мы воспользуемся следующей XML-схемой:

<resource oid="03c3ceea-78e2-11e6-954d-dfdfa9ace0cf"
            xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
            xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
            xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3"
            xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3"
            xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"
            xmlns:ext="http://midpoint.evolveum.com/xml/ns/story/orgsync/ext"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:icfc="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3">

    <name>HR System</name>

    <!--
   Данный раздел определяет коннкетор IDM, используемый для подключения ресурса.
   -->   
    <connectorRef type="ConnectorType">
        <filter>
            <q:equal>
                <q:path>c:connectorType</q:path>
                <q:value>com.evolveum.polygon.connector.csv.CsvConnector</q:value>
            </q:equal>
        </filter>
    </connectorRef>

    <!--
    Конфигурация подключения коннектора к источнику данных. Параметры подключения специфичны для CSV-коннектора.
    -->    
    <connectorConfiguration>
        <icfc:configurationProperties
                    xmlns:icfccsvfile="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/bundle/com.evolveum.polygon.connector-csv/com.evolveum.polygon.connector.csv.CsvConnector">
            <icfccsvfile:filePath>[путь-к-example.csv-в-файловой-системе-сервера-IDM]</icfccsvfile:filePath>
            <icfccsvfile:encoding>utf-8</icfccsvfile:encoding>
            <icfccsvfile:fieldDelimiter>,</icfccsvfile:fieldDelimiter>
            <icfccsvfile:multivalueDelimiter>;</icfccsvfile:multivalueDelimiter>
            <icfccsvfile:uniqueAttribute>empno</icfccsvfile:uniqueAttribute>
            <icfccsvfile:passwordAttribute>password</icfccsvfile:passwordAttribute>
        </icfc:configurationProperties>
    </connectorConfiguration>

    <!--
    Настройки корреляции атрибутов между источником и IDM.
    -->    
    <schemaHandling>
        <objectType>
            <displayName>Default Account</displayName>
            <default>true</default>
            <objectClass>ri:AccountObjectClass</objectClass>
            <attribute>
                <ref>ri:empno</ref>
                <displayName>Name</displayName>
                <limitations>
                    <minOccurs>0</minOccurs>
                    <access>
                        <read>true</read>
                        <add>true</add>
                        <modify>true</modify>
                    </access>
                </limitations>
                <inbound>
                    <target>
                        <path>name</path>
                    </target>
                </inbound>
            </attribute>
            <attribute>
                <ref>ri:firstname</ref>
                <displayName>First name</displayName>
                <inbound>
                    <target>
                        <path>givenName</path>
                    </target>
                </inbound>

            </attribute>
            <attribute>
                <ref>ri:lastname</ref>
                <displayName>Last name</displayName>
                <inbound>
                    <target>
                        <path>familyName</path>
                    </target>
                </inbound>
            </attribute>
            <activation>
                <administrativeStatus>
                    <inbound/>
                </administrativeStatus>
            </activation>

            <credentials>
                <password>
                    <inbound>
                        <strength>weak</strength>
                        <expression>
                            <generate/>
                        </expression>
                    </inbound>
                </password>
            </credentials>

        </objectType>

    </schemaHandling>

    <!--
    Раздел для настройки политик безопасности. В данном примере они не используются.
    -->    
    <projection>
        <assignmentPolicyEnforcement>none</assignmentPolicyEnforcement>
    </projection>

    <!--
    Настройки действий при синхронизации данных.
    -->    
    <synchronization>
        <objectSynchronization>
            <enabled>true</enabled>
            <correlation>
                <q:equal>
                    <q:path>c:name</q:path>
                    <expression>
                        <path>$projection/attributes/empno</path>
                    </expression>
                </q:equal>
            </correlation>
            <reaction>
                <situation>linked</situation>
                <synchronize>true</synchronize>
            </reaction>
            <reaction>
                <situation>deleted</situation>
                <synchronize>true</synchronize>
                <action>
                    <handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/action-3#deleteFocus</handlerUri>
                </action>
            </reaction>
            <reaction>
                <situation>unlinked</situation>
                <synchronize>true</synchronize>
                <action>
                    <handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/action-3#link</handlerUri>
                </action>
            </reaction>
            <reaction>
                <situation>unmatched</situation>
                <synchronize>true</synchronize>
                <action>
                    <handlerUri>http://midpoint.evolveum.com/xml/ns/public/model/action-3#addFocus</handlerUri>
                </action>
            </reaction>
        </objectSynchronization>
    </synchronization>
</resource>

Для подключения ресурса выполните следующие шаги:

  1. Войдите в интерфейс администратора IDM.

  2. Нажмите кнопку Импортировать и выберите конфигурационную схему hr-csv-example.xml.

  3. Убедитесь, что ресурс успешно подключен. Для этого:

    1. Перейдите на вкладку Ресурсы, откройте ресурс HR System и нажмите кнопку Протестировать соединение. В данном примере источник данных это всего лишь файл в файловой системе сервера IDM, поэтому подключение должно быть быстрым и безошибочным.

    2. В ресурсе HR System выберите раздел Аккаунты и переключите тумблер Искать в на значение Ресурс. В окне должен отобразиться список учетных записей из CSV-файла.

После этих шагов ресурс подключен к IDM. Теперь вы можете синхронизировать данные из ресурса с данными в IDM, по правилам, определенным в конфигурационной схеме ресурса. Поскольку нам нужно импортировать данные из ресурса в IDM, возспользуемся задачей импорта данных, нажав на кнопку Импортировать в нижней части экрана со списком аккаунтов ресурса HR System.

После того, как задача на импорт закончит исполняться, вы можете просмотреть созданные учетные карточки пользователей IDM в подразделе Все пользователи раздела Пользователи.