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

功能介绍
最后更新时间: 1/19/2024, 11:05:32 AM

# 概述

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

# 前提条件

拥有IDaaS企业中心平台的管理员权限。

# 脚本代码规则

# 禁止使用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 工作地址
externalId string 外部系统ID
employeeRelation string 雇佣关系
deactivationDate Timestamp 停用日期
disabledMode string 禁用方式
其他自定义属性 string

# organization 对象

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

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

# 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 禁用
remoteId string 远程 ID
roles list 角色列表
其他自定义属性 string

我们在使用脚本对象时,可以直接使用【对象】.【属性名】的方式获取。

例如:user.name、organization.code、account.username、enterprise.domain,对于扩展属性,此方法同样适用,例如用户存在扩展属性hobby(爱好),我们可以使用user.hobby来获取爱好。

# 操作步骤

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

  1. 登录IDaaS企业中心平台,在上方导航栏选择 “资源 > 应用” ,选择应用。

  2. 进入应用详情,选择 “认证集成 > 映射配置” 。

  3. 单击 "添加映射" ,配置参数如下。

    • 应用系统属性名:自定义应用系统属性名。

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

    • 动态脚本内容:javascript脚本。

  4. 配置完成后保存,单击 “测试” 按钮,选择测试用户。

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

# 脚本样例

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

# 示例一. 明天的当前时间

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

# 示例二. 用户扩展属性

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

user.hobby;
1

# 示例三. 用户的手机号码并隐藏中间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

# 示例四. 根据用户名生成用户的邮箱

var username = user.userName;
username.toLowerCase()+"@bamboocloud.com";
1
2