如何开发映射定义里的动态脚本

7/7/2020 功能介绍

IDaaS的配置中,支持IDaaS的属性和应用系统的属性做映射。本篇将指导您如何在使用javascript动态脚本作为映射类型进行映射配置,编写动态脚本时,利用脚本代码生成属性值,同时也可对该属性做一些显示条件。

# 脚本代码规则

# 禁止使用Java class

若使用下面代码:

var File = Java.type('java.io.File'); File;
1

会抛出如下异常

java.lang.ClassNotFoundException: java.io.File
1

# 限制使用CPU的时间

默认限制执行时间为1秒,超过时间将抛出异常。

若使用下面的代码:

do{}while(true);
1

会抛出下面的异常异常:

ScriptCPUAbuseException
1

# 限制内存的使用量

默认大小为10M,超过将抛出异常。

若使用下面的代码:

var o={},i=0; while (true) {o[i++] = 'abc'}
1

会抛出下面的异常异常:

ScriptMemoryAbuseException
1

# 限定脚本格式

为了方便重写脚本,脚本中的if、while、for语句必须使用大括号,否则将格式错误。

若使用下面的代码:

var o={},i=0; while (true) o[i++] = 'abc';
1

将抛出异常

BracesException
1

# 限制使用部分函数

如下的函数不允许在代码中使用,如果在代码中出现了,没有任何效果。

print
echo
quit
exit
readFully
readLine
load
loadWithNewGlobal
1
2
3
4
5
6
7
8

# 脚本对象

映射脚本包含对象有user(用户)、organization(组织机构)、enterprise(企业对象)、account(应用账号)。

# user 对象

user 对象中保存了当前用户的属性。包含属性定义中内置属性,自定义属性。

属性名 值类型 说明
id string 用户 ID
organizationId string 组织机构 ID
userName string 用户名
name string 名称
firstName string 名字
middleName string 中间名
lastName string 姓氏
email string 邮箱
mobile string 手机号
disabled boolean 禁用
guid string 用户 GUID
employeeid string 员工号
attrGender string 性别
attrBirthday Timestamp 生日
attrNickName string 昵称
attrIdentityType string 身份类型
attrIdentityNumber string 身份证号码
attrArea string 地区
attrCity string 城市
attrManagerId string 经理 ID
attrUserType string 用户类型
attrHireDate Timestamp 离职日期
attrWorkPlace string 工作地址
其他自定义属性 string

# organization 对象

organization 对象中保存了机构的信息。

属性名 值类型 说明
id string 组织机构 ID
code string 代码
name string 名称
categoryId string 组织机构分类 ID
parentId string 父组织机构 ID
disabled boolean 禁用
displayPath string 组织机构路径

# enterprise 对象

enterprise 对象中保存了企业的基本信息。

属性名 值类型 说明
id string 企业 ID
tenantId string 远程企业 ID
domain string 企业域名
name string 企业名称
logo string 企业LOGO

# account 对象

account 对象中保存了当前账号的属性。包含应用账户模型-属性定义中内置属性,自定义属性。

属性名 值类型 说明
id string 账号 ID
username string 账号名
name string 账号姓
attrManagerId string 直属上级
organizationId string 应用机构 ID
disabled boolean 禁用
roles list 角色列表
其他自定义属性 string

  • 我们在使用脚本对象时,可以直接使用【对象】.【属性名】的方式获取。
  • 例如:user.name、organization.code、account.username、enterprise.domain,对于扩展属性,此方法同样适用,例如用户存在扩展属性hobby(爱好),我们可以使用user.hobby来获取爱好。

# 配置过程

这里以OIDC协议应用的认证映射配置为例进行说明,其他涉及属性映射配置的地方均可参考如下配置方法。

  • 1.管理员登录企业中心。

  • 2.选择选择【资源】>【应用】,选择应用。

  • 3.进入应用详情,选择认证配置-映射配置。

  • 4.添加映射。

应用系统属性名:自定义

映射类型:选择动态脚本。

动态脚本内容:javascript脚本。

  • 5.点击保存。

# 测试脚本

接下来可以直接对映射脚本内容进行测试。

  • 1.点击认证配置-映射配置的测试按钮。

  • 2.选择测试用户。

  • 3.点击测试,显示该属性对应的值。(示例脚本内容为,取用户名+邮箱后缀生成邮箱地址)

# 脚本样例

以下是一些简单的脚本样例,在实际的配置过程中可以参考如下写法。

# Example 1. 明天的当前时间

var date =new Date();
date.setDate(date.getDate()+1);
date.toISOString();
1
2
3

# Example 2. 用户扩展属性

首先,用户的属性定义中新增hobby(爱好)作为扩展属性。

user.hobby;
1

# Example 3. 用户的手机号码并隐藏中间4位

var mobile = user.mobile;
var result = "";
if(mobile.length==11){
    result = mobile.slice(0,3)+"****"+mobile.slice(-4);
}
result;
1
2
3
4
5
6

# Example 4. 根据用户名生成用户的邮箱

var username = user.userName;
username.toLowerCase()+"@bamboocloud.com";
1
2
Last Updated: 8/10/2022, 10:04:52 AM