Skip to content

动态脚本属性映射

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

前提条件

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

脚本代码规则

禁止使用Java class

若使用下面代码:

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

会抛出如下异常:

javascript
java.lang.ClassNotFoundException: java.io.File

限制使用CPU的时间

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

若使用下面的代码:

javascript
do{}while(true);

会抛出下面的异常:

javascript
ScriptCPUAbuseException

限制内存的使用量

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

若使用下面的代码:

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

会抛出下面的异常:

javascript
ScriptMemoryAbuseException

限定脚本格式

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

若使用下面的代码:

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

将抛出异常:

javascript
BracesException

限制使用部分函数

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

javascript
print
echo
quit
exit
readFully
readLine
load
loadWithNewGlobal

脚本对象

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

user 对象

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

属性名值类型说明
idstring用户 ID
organizationIdstring组织机构 ID
userNamestring用户名
namestring名称
firstNamestring名字
middleNamestring中间名
lastNamestring姓氏
emailstring邮箱
mobilestring手机号
disabledboolean禁用
guidstring用户 GUID
employeeidstring员工号
attrGenderstring性别
attrBirthdayTimestamp生日
attrNickNamestring昵称
attrIdentityTypestring身份类型
attrIdentityNumberstring身份证号码
attrAreastring地区
attrCitystring城市
attrManagerIdstring经理 ID
attrUserTypestring用户类型
attrHireDateTimestamp离职日期
attrWorkPlacestring工作地址
externalIdstring外部系统ID
employeeRelationstring雇佣关系
deactivationDateTimestamp停用日期
disabledModestring禁用方式
其他自定义属性string

organization 对象

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

属性名值类型说明
idstring组织机构 ID
codestring代码
namestring名称
categoryIdstring组织机构分类 ID
parentIdstring父组织机构 ID
disabledboolean禁用
displayPathstring组织机构路径
leaderIdstring组织机构负责人ID

enterprise 对象

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

属性名值类型说明
idstring企业 ID
tenantIdstring远程企业 ID
domainstring企业域名
namestring企业名称
logostring企业LOGO

account 对象

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

属性名值类型说明
idstring账号 ID
usernamestring账号名
namestring账号姓
attrManagerIdstring直属上级
organizationIdstring应用机构 ID
disabledboolean禁用
remoteIdstring远程 ID
roleslist角色列表
其他自定义属性string

TIP

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

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

操作步骤

TIP

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

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

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

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

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

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

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

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

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

脚本样例

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

示例一. 明天的当前时间

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

示例二. 用户扩展属性

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

javascript
user.hobby;

示例三. 用户的手机号码并隐藏中间4位

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

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

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

竹云IDaaS开放平台