Short introduction: here you can find a workaround, how to
organize search for users in OIM 11g to find users with the specified process
form attribute.
Q: Как в OIM 11g, используя стандартный интерфейс пользователя, найти всех
пользователей, которым я выделил определенный ресурс с определенным атрибутом?
A: OIM 11g (как и OIM 9.X) позволяет в стандартном интерфейсе осуществлять поиск пользователей
только по атрибутам самих пользователей. Но набор этих атрибутов расширяем, и
возможно создать атрибут у пользователя, соответствующий необходимому атрибуту
формы процесса какого-то ресурса.
Рассмотрим пример. Имеется система MySystem, у нее имеется
атрибут PostGrad, соответствующий признаку, что данная учетная запись создана для
сотрудника, закончившего аспирантуру (Post Graduate). Форма процесса с требуемым
атрибутом показана на рис. 1.
Рис. 1.
Форма процесса MySystem
Задача: найти всех пользователей, у которых
этот признак установлен в "true".
Очевидное решение – создать такой же атрибут пользователя и на факт создания
пользователя с данным атрибутом или изменения этого атрибута выполнять адаптер,
который копирует значение атрибута в атрибут формы пользователя.
1. Создадим новый атрибут пользователя USR_UDF_POSTGRAD. Это можно сделать через
административную консоль OIM
Advanced Administration -> Configuration -> User Configuration -> User
Attributes. Созданный атрибут конфигурации пользователя
показан на рис. 2.
Рис. 2.
Конфигурация пользователя с расширенным атрибутом Post Graduate.
2. Создаем политику авторизации, позволяющую просматривать, изменять и
искать по этому атрибуту. Для этого в консоль OIM Administration перейдем на закладку Authorization Policy и
создадим политику авторизации ACME
Search Post Grad, указав следующие атрибуты:
Тип (Entity Name): User
Management
Операции (Permissions): Search User
View
User Details Атрибут: Post Grad
Modify
User Details Атрибут: Post Grad
Выбор операций показан на рис. 3.
Рис. 3.
Выбор операций для политики авторизации.
3. Пропустите раздел Data
Constraint (пусть политика действует для всех
пользователей) и на следующей странице укажите роль SYSTEM ADMINISTRATORS, к
которой будет применяться политика. Выбор роли показан на рис. 4.
Рис. 4.
Выбор роли для назначения политики авторизации.
4. Нажмите Finish для завершения создания политики. Теперь вы
сможете просматривать атрибут Post
Grade, модифицировать его и осуществлять по нему поиск.
Политика авторизации показана на рис. 5.
Рис. 5.
Политика авторизации.
Теперь необходимо установить значение этого
атрибута при смене соответствующего атрибута в форме процесса ресурса MySystem.
5. В процессе, соответствующему ресурсу MySystem (MySystem prov) добавим новую задачу PostGrade Updated, которая
будет вызываться при изменении атрибута формы процесса PostGrade. Задачи процесса
показаны на рис. 6.
Рис. 6.
Задачи процесса MySystem.
6. Решение задачи для OIM 9.X и попытка его применения для OIM 11g.
6.1.
Рассмотрим копирование значения прямо в маппинге задачи
процесса. Для этого создадим адаптер, возвращающий "1" или "0" в зависимости от
признака. Созданный адаптер показан на рис. 7.
Рис. 7.
Адаптер, передающий значения из типа Boolean в строковое.
6.2. Назначим этот адаптер на задачу PostGrade Updated. Назначенный
адаптер показан на рис. 8.
Рис. 8.
Назначение ранее созданного адаптера на задачу Post Grade Updated.
6.3. Установим маппинг возвращаемого значения на User Definition -> Post Graduate (см. рис. 9)
Рис. 9.
Маппинг возвращаемого значения адаптера.
6.4. Установим маппинг передаваемого значения
на Process Data -> PostGrad (см. рис. 10)
Рис. 10.
Маппинг передаваемого значения.
Теперь при смене атрибута PostGrade формы процесса
ресурса MySystem должен изменяться соответствующий атрибут у пользователя. Этот подход работает в OIM 9.X. Проверим его, применительно к OIM 11g.
6.5. Найдем пользователя с выделенным ресурсом
MySystem (см.
рис. 11). Нажмем Open для редактирования формы процесса.
Рис. 11.
Пользователь с ресурсом MySystem.
6.6. На форме процесса установите соответствующий признак и нажмите Save (см. рис. 12). В версии OIM11g вы должны получить
информацию об ошибке.
Рис. 12.
Форма процесса ресурса MySystem.
В логе должна появиться ошибка, аналогичная
следующей:
Рис. 13.
Ошибка в OIM 11g.
Внимание. Вышеописанный
способ хорошо работает для OIM
9.X, но не применим для OIM 11g. Видимо, обратный маппинг возвращаемых
переменных адаптера на User
Definition приводит к вызову адаптеров старых объектов
данных Users (например, tcUSRcheckACT), что не согласуется с новой конфигурацией пользователей, не
использующих объект данных Users.
Как обойти это ограничение в OIM 11g? Можно написать
простой Java-класс,
который, используя OIM API по ключу пользователя будет устанавливать значение данного атрибута.
Рассмотрим это в п. 7.
Текст Java-класса можно посмотреть здесь (по ссылке в статье). Его
необходимо скомпилировать, запаковать в JAR-архив и скопировать в каталог $OIM/JavaTasks.
7. Решение задачи для OIM 11g.
7.1. Создадим аналогичный адаптер, который
будет изменять значение атрибута пользователя (см. рис. 14).
Рис. 14.
Адаптер для установки атрибута Post
Grade.
7.2. Добавьте переменные адаптера: usrkey (String, Resolve at Runtime), postgrad(String, Resolve at
Runtime) (см. рис.15).
Рис. 15.
Переменные адаптера.
7.3. Добавьте задачу адаптера (Add -> Java Task -> New Instance). Как показано на рис. 16, выберем JAR-файл с классом, конструктор по-умолчанию и
метод updatePostGrad.
Рис. 16.
Выбор класса задачи адаптера.
7.4. Установим маппинг переменных класса (см. рис. 17):
Output: Return Variable
Input (1): usrkey (Adapter Variable)
Input (2): postgrad (Adapter Variable)
Рис. 17.
Маппинг переменных адаптера на входящие переменные метода.
Скомпилируем адаптер и убедимся, что Compile Status = OK.
7.6. В задаче процесса PostGrad
Updated уберем старый адаптер и назначим новый, установим
следующий маппинг (см. рис. 18):
Adapter Return Value: Response Code
usrkey: User
Definition -> User Key
postgrad: Process
Data -> PostGrad
Рис. 18.
Маппинг задачи процесса.
8. Проверка конфигурации.
8.1. Найдем пользователя OIM в OIM Administration Console, у которого есть ресурс MySystem.
Убедимся, что признак Post Graduate у него установлен в FALSE (см. рис. 19).
Рис. 19.
Атрибут Post Graduate пользователя.
8.2. Зайдем в форму процесса для ресурса MySystem и установим признак PostGrade. (см. рис. 20).
Рис. 20.
Форма процесса MySystem.
8.3. Откроем пользователя заново и убедимся (потребуется закрыть атрибуты
пользователя и открыть их заново), что атрибут PostGrad установлен в TRUE, см. рис. 21.
Рис. 21.
Атрибуты пользователя с Post
Graduate = TRUE.
Таким образом, при
смене атрибутов формы процесса MySystem мы изменили
атрибут пользователя Post
Graduate.
8.4. В OIM Advanced
Administration перейдем Configuration -> User Configuration -> Search Configuration и выберите атрибут Post
Graduate как доступный для поиска (см. рис. 22). Нажмем Save.
Рис. 22.
Конфигурация поиска пользователей.
8.5. В OIM Administration перейдем в Advanced Search и добавим
атрибут поиска Post Graduate, как показано на рис. 23.
Рис. 23.
Добавления атрибута Post Graduate на форму поиска.
8.6. Найдем всех пользователей, у которых
атрибут Post Graduate установлен в TRUE, убедимся, что там присутствует наш пользователь (см. рис. 24).
Рис. 24.
Поиск по атрибуту Post Graduate.
Задача решена.
No comments:
Post a Comment