文档

高级:账户字段表达式

更新时间:

基础说明

IDaaS 内置了表达式引擎,在 SAML 和 OIDC 应用中,支持使用高级表达式,向返回信息中添加新的参数。当目标应用需接受额外参数,且参数需要进行某种转化、拼接、判断时,可使用表达式实现。

与此类似,可以使用同样方法,在配置与身份提供方间同步的字段映射时,也可使用表达式实现字段值自定义赋值。

本篇文档下方列有常见示例,帮助快速理解使用场景和方法。

以 OIDC 为例,在 SSO 配置中,支持扩展返回的 id_token 信息。在扩展值中,可填写高级表达式,以达成特定处理目标。

image.png

表达式分为两部分:

  1. 模型,包含 User(对应 IDaaS 账户) 和 AppUser(对应应用账户) 两种。

  2. 函数,代表执行逻辑关系。

模型说明

1. User

下列字段在 IDaaS 的 User 模型中,可使用类似 user.usernameuser.lockExpireTime 的引用方式。

属性

说明

username

用户名

displayName

用户显示名

passwordSet

密码是否已设置

phoneRegion

手机地区编号,示例:中国区号为 "86",不带 "00" 或 "+"

phoneNumber

手机号码

email

邮箱

userSourceType

来源类型,取值为: build_in、ding_talk、ad、ldap、idp_auto_build

userSourceId

来源ID

status

用户状态,取值为:enabled、disabled

accountExpireTime

账户过期时间,UNIX纪元时间,单位毫秒

registerTime

用户注册时间,UNIX纪元时间,单位毫秒

lockExpireTime

锁定过期时间,UNIX纪元时间,单位毫秒

updateTime

最近一次更新时间,UNIX纪元时间,单位毫秒

description

描述

2. App User

下列字段在 IDaaS 的 AppUser 模型中,可使用类似 appUser.username 引用方式。

属性

说明

username

应用账号用户名

3. IdP User

IdP User 模型应用于与身份提供方进行同步时,举例:钉钉的办公地点字段: idpuser.work_place

具体字段请查看对应身份提供方文档,例如钉钉的 钉钉帮助文档 - 用户详情

函数说明

以下为我们开放的常用函数及说明:

函数名

函数定义

说明

Append

Append(str1, str2, ..., strn)

拼接输入参数为新的字符串,等于 str1+str2+...

Join

Join(source1, source2, ..., sourceN, separator)

将多个源值拼接为一个字符串,源值间用分隔符分隔。

Coalesce

Coalesce(source1, source2, ..., sourceN, defaultValue)

返回输入参数中第一个非空参数,若参数都为空,则返回 null,其中非空指非 null 且参数长度大于 0。

IIF

IIF(condition, whenTrue, whenFalse)

三目运算。根据condition的结果返回不同的值,为 true 时返回whenTrue,为 false 时返回whenFalse。

IsNull

IsNull(value)

当 value 为 null 即缺失时,输出为 true。

IsNullOrEmpty

IsNullOrEmpty(value)

当 value 为 null 或空字符串时,输出为 true。

Now

Now()

返回表示当前 UTC DateTime 的字符串,格式为 yyyy-MM-dd'T'HH:mm:ssXXX

StringReplace

StringReplace("hello $VariableName", VariableName, ReplaceString)

普通字符串替换。

Trim

Trim(source)

去除源值字符串前后的空白字符。

ToLower

ToUpper

ToLower(source)

ToUpper(source)

字符串变为全大写或全小写。

Substring

Substring(source, fromIndex, endIndex)

返回字符串的子字符串,即子字符串下标地址为 [fromIndex, endIndex]。

SubstringBefore

SubstringBefore(source, subString)

返回 subString 之前的字符串。

Array

Array(source1, source2,...)

将多个值组合成为数组。值可为 Object 类型。

Object

Object(key1, value1, key2, value2, ...)

通过制定键值对组合成为 Object 对象。

参考示例

效果

表达式示例

取用户名,拼接固定 "@example.com"。

Append(user.username, "@example.com")

当邮箱不为空,返回邮箱。

当邮箱为空时,取手机号。

Coalesce(user.email, user.phoneNumber)

当手机号为空时,默认填写固定手机号。

IFF(IsNullOrEmpty(user.phoneNumber), "1888888****", user.phoneNumber)

将手机号地区和手机号以 - 拼接。

Join(user.phoneRegion, user.phoneNumber, "-")

返回包含显示名的自定义欢迎信息。

StringReplace("hello $DisplayName", "$DisplayName", user.displayName)

将手机号中间四位用 * 脱敏返回。

Append(

SubString(user.phoneNumber, 0, 4),

"****",

SubString(user.phoneNumber, 8, 10)

)

提取邮箱中的用户名。

SubstringBefore(user.email, "@")

组装 SCIM 规范中数组格式的 email 字段。

Array(Object("email", user.email, "type", "work", "primary", true))

  • 本页导读 (0)
文档反馈