业务介绍

现需要将OIM用户推送到welink系统,通过webservice connector实现,并且要求符合指定规则用户能够自动同步。

安装Webservice Connector

1. 从oracle官网下载WebServices Connector.将zip文件Webservices-11.1.1.5.0.zip上传到服务器,解压后在进入Webservices-11.1.1.5.0目录,执行以下命令生成一个connector

[oracle]
$ cd Webservices-11.1.1.5.0
$ chmod +x  build-connector.sh
$ ./build-connector.sh "Welink" "WL"

第一个参数是接口名称,第二个参数是简称

命令执行成功后会在当前目录生成相关配置信息,可以直接把当前目录拷贝到oim的connector目录下(建议修改名称后再复制)

[oracle]
mv Webservices-11.1.1.5.0 WelinkWSConnetor
cp -rf WelinkWSConnetor /home/oracle/Oracle/Middleware/Oracle_Home/idm/server/ConnectorDefaultDirectory/

2. 安装完毕后登录后台管理系统http://10.60.25.67:14000/sysadmin/(账号是xelsysadm),点击Manage Connector->安装,选择刚刚创建的连接器

点击下一步->安装,安装时间较长,出现以下界面说明安装成功

3. 进入IT Resource创建新的IT Resource,选择上一步创建的Connector,Welink

点击完成(字段暂时不用管)

4. 点击Form Designer创建表单,这时候提示你需要创建Sandbox

5. 进入SandBox创建

输入名称即可,创建好的sandbox默认是激活状态

6. 回到Form Designer,创建form,选择连接器输入名称,点击创建

7. 点击Application Instance创建应用实例,输入名称,选择上面创建的IT resource和Form

创建的Application instance的组织默认是Top,这里可以定义组织,这样只要该组织下的人默认会加上该Application instance

8. 进入sandbox,将刚刚创建的sandbox发布(publish)

配置

连接器目录下包含一个oracle soa开发的实例模板,具体路径为

$ pwd
/home/oracle/Oracle/Middleware/Oracle_Home/idm/server/ConnectorDefaultDirectory/WelinkWSConnetor/soa/project
$ ll
total 4
drwxr-xr-x 9 oracle oinstall 4096 Mar 13 23:21 WelinkWSConnetor
$ cd WelinkWSConnetor/
$ ll
total 68
-rw-r--r-- 1 oracle oinstall 17103 Mar 13 23:21 WelinkWSConnetor.jpr
drwxr-xr-x 3 oracle oinstall  4096 Mar 13 23:21 classes
-rw-r--r-- 1 oracle oinstall  1615 Mar 13 23:21 composite.xml
drwxr-xr-x 6 oracle oinstall  4096 Mar 13 23:21 SCA-INF
drwxr-xr-x 2 oracle oinstall  4096 Mar 13 23:21 testsuites
-rw-r--r-- 1 oracle oinstall   794 Mar 13 23:21 WebservicesConnectorServiceWrapper.wsdl
-rw-r--r-- 1 oracle oinstall 12001 Mar 13 23:21 WSConnector.bpel
-rw-r--r-- 1 oracle oinstall   565 Mar 13 23:21 WSConnector.componentType
drwxr-xr-x 2 oracle oinstall  4096 Mar 13 23:21 wsdl
drwxr-xr-x 2 oracle oinstall  4096 Mar 13 23:21 xsd
drwxr-xr-x 2 oracle oinstall  4096 Mar 13 23:21 xsl

将WelinkWSConnetor目录压缩下载到本地,导入jdeveloper中(需要安装soa插件)进行开发,具体开发文档参考https://docs.oracle.com/cd/E22999_01/doc.111/e38352/preinstall_steps.htm#CGWSR158

开发完毕后部署到soa上,再将接口webservice地址信息填到上面创建的IT Resource上,还需要输入weblogic的用户名和密码

passcode必须要输,这里可以随便输入字符串

测试

如果你配了组织那么该组织下的人员只要信息变更会自动调用接口,如果需要手动调用,参考以下步骤

1. 登录Identify Self Service(http://10.60.25.67:14000/oim),切换到Manager->Users点击具体用户进入用户详细信息

2. 进入Account点击Request

3. 输入关键字搜索Application Instance,点击Add to Cart(加入购物车??)

4. 点击下一步,输入账号信息,点击update

这个表单就是我们上面通过Form Designer创建的表单

5. 点击Submit完成提交

6. 如果没有报错,提交后状态状态变为Provisioned

如果状态为Provisioning说明推送失败,可以点击Action->Resource History进行重试

如果前面request的状态是Provisioning,那么历史记录里task的状态会变为已拒绝(Rejected)

这个界面还可以手动触发其他Task

connector的soa模板中,返回值定义如下(以create user为例):

<xs:complexType name="createResponse">
    <xs:sequence>
    <xs:element name="uid" type="xs:string" minOccurs="0"/>
</xs:sequence>

接口一定要返回uid字段,不然request会一直处于Provisioning状态。

字段映射

在oim中,推送给其他系统的用户叫做Account(账号),account和oim user并没有关系,这个业务上可以理解为一个用户在多个系统中信息可以是不一样的,甚至账号都是不一样的,用户需要哪些系统(Application instance)的权限,可以提交Request,填写表单信息,由管理员审核,审核通过后账号可以推送到指定的Application Instance

创建request时,填写的表单都是空白的,以webservice connector的表单为例:

但很多信息是可以从oim user上带过去的,比如邮箱地址,用户名,登录账号等,重新填写不仅效率低下还容易出错,oim是支持字段映射的,将oim user上的字段映射到account上,映射的操作叫做ProPopulate,下面介绍如何进行Prepopulate

  • 1. prepopulate需要在oim designconsole工具上操作,designconsole是一个gui工具,可以对oim资源进行配置,不过从12c开始部分功能已经迁移到web界面上,后续版本估计会将功能完全迁移过去,但目前一些功能还是需要借助该工具进行配置。designconsole需要在图形界面环境下打开,可以通过vnc连接到服务器,输入以下命令打开
[oracle]
cd /home/oracle/Oracle/Middleware/Oracle_Home/idm/designconsole
chmod +x *.sh
./xlclient.sh

ServerURL: t3://{oimserver}:14000

userId: xelsysadm

Password: {xelsysadm-password}

designconsole界面:

  • 2. 进入Development Tools->Form Designer,输入表名,点击工具拦搜索,在下面的tab页切换到Pre-Populate
表名规则:UD_{short code}_USR,shortcode就是生成connector的时候命令行的第二个参数
$ ./build-connector.sh "Welink" "WL"

因为在本例中,表名为:UD_WL_USR

  • 2. 表单由多个版本,激活版本只要一个,在激活版本中,你无法进行任何操作,因此第一步,要先创建一个新的表单版本,点击Create New Version进行创建,输入名称后,选择当前版本进行编辑。
  • 3. 切换到Pre-Populate,点击Add创建新的映射

FieldName: 表单字段

Rule:映射规则,双击弹窗选择Default

Adapter:映射适配器,双击弹窗选择DatabaseResource Prepopulate

Order:可以放空

输入完后,点击工具栏保存按钮,会自动带出Order和Adapter Status字段,并且下面按钮可用

  • 4. 在Adapter Variable表格行第一列(数字列)双击弹出编辑窗口

这里可以选择多种需要映射的数据类型,我们这里选择User Definition,也就是映射oim用户字段,编辑完毕点击工具保存进行保存。

  • 5. 激活当前表单版本,点击Make Version Active

我们这里映射了三个字段,其中Fax映射了一个Literal,也就是固定值(仅用于测试)

  • 6. 可以到identity界面创建一个用户进行测试,这时候界面上表单都是空白的(如果要显示还需要写插件),但是提交后数据会自动同步到account

登录到em查看soa实例记录,可以看到数据已经传过来

也可以登录到OIM数据库查看表UD_{shortcode}_USR

策略配置

根据前面的操作我们知道,只要在Account上创建Request就能往业务系统推送账号,上面都是人工操作,是否可以做到自动推送,这样一旦有新用户进来可以根据规则自动推送到指定系统。

在OIM中我们可以借助策略(Access Policies)实现以上需求,Access Policies可以关联到应用和角色,角色可以配规则,这样只要用户符合角色规则就会自动授权角色,也就自动获得该角色的所有策略,策略上绑定的应用也会自动绑定到account上。

  • 1. 创建角色

登录Identity Self Service,进入Manage,点击Roles And Access Policies创建角色,在Members页面创建成员规则(Member Rule)

该界面可以编辑简单规则,符合该规则的用户会自动授权该角色

  • 2. 创建策略

点击Roles And Access Policies创建策略,在Applications页面选择应用,在Roles页面选择角色

创建完角色和策略后,创建新用户,可以在详情页查看角色和账号信息

oim角色和策略的同步是依赖定时器跑job实现,如果创建完用户没有角色和策略,你可以手动执行job或者等一会。可以通过以下方式手动执行job

登录到sysadmin,进入System Configuration->Scheduler,搜索Refresh Role Memberships,并点击Run Now手动触发

该job负责同步角色信息,一小时执行一次

再搜索Evaluate User Policies并执行,该job同步用户策略,默认10分钟执行一次

Trackback

no comment untill now

Add your comment now