介绍
Oracle Identity Manager简称OIM是Oracle公司开发企业身份管理应用,主要是负责企业用户信息,组织信息的同步,依靠强大的连接器,OIM几乎可以从任何系统中同步用户,并且同步至任何系统,并且这些工作都是通过配置完成,要在异构系统间中做到配置式的同步,需要对整个系统进行高度抽象,也正因此,OIM有众多新概念,如果不理解这些概念的作用,很难灵活的使用OIM。本篇文章将OIM中常用的概念进行整理,包括以下内容
- 连接器(Connector)
- 适配器(Adapter)
- IT资源(IT Resource)
- 表单(Form)
- 流程(Process)
- 资源对象(Resource Object)
- 预配(Prepopulate)
Read the rest of this entry
oim
背景
某项目OIM资源历史记录时间显示时区不对,比北京时间少了8个小时
正常时间:
导致了跨时区用户无法登录,账户被锁,在修改了所有跟时区有关的环境信息后(包括操作系统时区,数据库时区,jvm时区,oim时区)依然无法解决。
Read the rest of this entry
oim
背景
某项目OIM修改密码异常的慢,修改一次密码需要耗费15分钟时间,该功能基本已不可用,通过curl工具调用OIM rest api进行修改密码也需要十几分钟的时间
curl -X PUT \
http://10.10.10.10:14000/iam/governance/selfservice/api/v1/users/61729/password \
-H 'accept-language: zh-CN,en-US;q=0.8,zh;q=0.7,zh-TW;q=0.5,zh-HK;q=0.3,en;q=0.2' \
-H 'authorization: Basic xxxxxxxxxxxxxxxxxxxxx' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-H 'postman-token: e86578e5-6c12-6bd0-3304-7588cae0f60a' \
-H 'x-requested-by: xx' \
-d '{
"oldPassword": "welcome@2020",
"newPassword": "welcome@2020238",
"confirmPassword": "welcome@2020238"
}'
排查
获取源码
后台并无报错,也没相关有价值的日志,因此考虑从源码入手,api源码位于oim这个应用中,你可以登录console查看ear包路径
Read the rest of this entry
oim
结论
先说结论,OIM无法动态展示预配的错误信息,也就是说,错误信息是固定的,写死的,具体原因我下面会讲到。
过程
OIM同步数据是通过task进行同步,task可以关联一系列的Response,Response可以通过design console进行配置,如图:
Read the rest of this entry
oim
概述
OIM对于用户数据有较为完善的方案,可以做到根据策略自动推送,字段更新自动推送等,详细方案可以参考之前的文章,相比用户数据,组织数据确没有这么便利,很多需求需要自开发,本文系统性介绍关于组织,在OIM中如何做到生产级别的可用性。
连接器
连接器方案上首选Webservice的连接器,因为接口可以自开发,扩展性强,可以根据业务定制接口,但遗憾的是Webservice Connector并不支持组织,而且没有官方的12c版本,导致不能使用12c的新特性。但幸运的是,可以通过更改资源类型让Webservice Connector支持组织数据,具体步骤可以参考之前的这篇文章,这里就不再赘述。
当然,你也可以选择自开发连接器,这个不在本文的讨论范围内,可以参考官方文档
定时任务
在用户数据同步中,可以通过策略+角色
实现自动推送,组织数据跟用户数据不同的是,组织数据是树结构,子节点的行为一般要和父节点保持一致,因此组织数据做不到自动推送的效果,我们需要开发一个定时器定时去做推送。OIM有提供定时调度功能,也支持自定义定时器。
Read the rest of this entry
oim
方案概述
Webservice Connector在OIM中只能同步用户资源,这一点在用build创建connector的时候就已经确定了,在connector的资源文件template/ConnectorConfig.xml
中就定义了资源类型
<Resource repo-type="RDBMS" name="@{WS_LONG_CODE} User">
<OBJ_TYPE>Application</OBJ_TYPE>
<OBJ_ALLOWALL>1</OBJ_ALLOWALL>
<OBJ_ALLOW_MULTIPLE>1</OBJ_ALLOW_MULTIPLE>
<OBJ_ORDER_FOR>U</OBJ_ORDER_FOR>
....
</Resource>
<OBJ_ORDER_FOR>U</OBJ_ORDER_FOR>
就表示该connector只能用于用户类型,所以在组织界面,无法选择webservice的connector,同样,webservice connector也未提供组织同步相关字段。
如果自己再开发一个connector一方面是学习成本,一方面是维护成本,既然只有类型不一样,那是否能够通过更改类型让webservice connector也支持组织同步?幸运的是答案是可以的。
Read the rest of this entry
oim
# 方案概述
OIM可以通过官方Database Applications Table进行连接数据库做用户数据推送
# 安装
1. 从oracle官网下载Database Applications Table安装包
2. 将zip安装包上传到服务器并解压,解压后需要将生成器一起解压
$ unzip dbat-12.2.1.3.0.zip
$ cd dbat-12.2.1.3.0
$ cd dbat-12.2.1.3.0/generator/
$ unzip dbat-generator-12.2.1.3.0.zip
$ ll
total 7300
drwxr-xr-x 5 oracle oinstall 4096 Mar 14 00:24 dbat-generator-12.2.1.3.0
-rw-r--r-- 1 oracle oinstall 7468754 Mar 22 2019 dbat-generator-12.2.1.3.0.zip
Read the rest of this entry
oim
业务场景
目前已经配了OIM user到process form的映射(通过prepopulate配置),但是如果oim user信息发生变更,不会自动同步到process form中,以webservice connector为例,期望oim user信息发生变更,webservice的表单能够自动同步,自动发起update操作。
实现
在OIM中,用户字段可以扩展,扩展字段的自动同步和标准字段的稍有不同,我在下文中会标注出。
概述
在oim中,同步操作就是一个task,配置同步的过程也就是配置task的过程,task分为两部分,oim user的task本身已经定义了一部分字段,可以增加,连接器表单task不同的连接器都会预定义一些字段,可以自行增加,同步的过程如下:
Read the rest of this entry
oim
背景介绍
oim user需要添加自定义字段,通过webservice connector推送到业务系统,webservice的表单也需要添加自定义字段,并且oim user中的字段能够映射到webservice中的自定义字段。
字段添加
1. 登录sysadmin(http://10.60.25.67:14000/sysadmin)
2. 点击SandBoxes
创建沙盒,沙盒名称自定义,沙盒创建好默认激活
Read the rest of this entry
oim