Topik ini menjelaskan cara menggunakan ekspresi tingkat lanjut untuk bidang akun di mesin ekspresi bawaan IDaaS dan menyediakan rincian tentang bidang model, fungsi, serta contoh referensi.
Dasar-Dasar
IDaaS dilengkapi dengan mesin ekspresi bawaan. Dalam aplikasi SAML dan OpenID Connect (OIDC), Anda dapat menggunakan ekspresi tingkat lanjut untuk menambahkan parameter baru ke informasi pengguna yang dikembalikan. Gunakan ekspresi jika aplikasi target memerlukan parameter tambahan yang perlu dikonversi, digabungkan, atau dievaluasi.
Metode yang sama juga dapat digunakan untuk menyesuaikan nilai bidang dengan ekspresi saat mengonfigurasi pemetaan bidang untuk sinkronisasi dengan penyedia identitas.
Topik ini menyertakan contoh referensi untuk membantu Anda memahami skenario dan metode penggunaan ekspresi.
Sebagai contoh, dalam konfigurasi Single Sign-On (SSO) OIDC, Anda dapat memperluas informasi id_token yang dikembalikan. Di dalam nilai ekstensi, Anda dapat memasukkan ekspresi tingkat lanjut seperti full_phone untuk mencapai tujuan pemrosesan tertentu.

Untuk informasi lebih lanjut, lihat Aturan Pemetaan Pernyataan Atribut SAML, Aturan Pemetaan Nilai Ekstensi OIDC id_token, dan Manajemen Bidang.
Ekspresi terdiri dari dua komponen:
Model, yang mencakup User (untuk akun IDaaS) dan AppUser (untuk akun aplikasi).
Fungsi, yang mewakili operasi logika.
Deskripsi Model
1. Pengguna
Bidang-bidang berikut terdapat dalam Model Pengguna IDaaS. Anda dapat mereferensikannya menggunakan format seperti user.username dan user.lockExpireTime.
Field Display Name | Field ID | Data Type | Required | Unique | User Permissions | Deskripsi |
ID Akun | userId | String | Tidak | Ya | Tampak | ID pengguna. |
Nama pengguna | username | String | Ya | Ya | Tampak | Nama pengguna. |
Nama tampilan | displayName | String | Tidak | Tidak | Dapat diedit | Nama tampilan pengguna. |
String | Tidak | Ya | Dapat diedit | Alamat email. | ||
Ponsel | phoneNumber | Number | Tidak | Ya | Dapat diedit | Nomor telepon. |
Kode area telepon | phoneRegion | Number | Tidak | Tidak | Dapat diedit | Kode area untuk nomor telepon. Contoh: Kode area untuk China adalah "86", tanpa "00" atau "+". |
ID Eksternal | userExternalId | String | Tidak | Ya | Tampak | ID eksternal pengguna. |
Jenis sumber | userSourceType | String | Tidak | Tidak | Tampak | Jenis sumber. Nilai yang valid:
|
ID Sumber | userSourceId | String | Tidak | Tidak | Tampak | ID sumber. |
Status akun | status | String | Tidak | Tidak | Tampak | Status pengguna. Nilai yang valid:
|
Deskripsi | description | String | Tidak | Tidak | Tampak | Deskripsi. |
Waktu kedaluwarsa akun | accountExpireTime | Number | Tidak | Tidak | Tampak | Waktu ketika akun pengguna kedaluwarsa. Ini adalah stempel waktu UNIX dalam milidetik. |
Waktu pendaftaran akun | registerTime | Number | Tidak | Tidak | Tampak | Waktu ketika pengguna mendaftar. Ini adalah stempel waktu UNIX dalam milidetik. |
Waktu kedaluwarsa kata sandi | passwordExpireTime | Number | Tidak | Tidak | Tampak | Waktu ketika kata sandi kedaluwarsa. Ini adalah stempel waktu UNIX dalam milidetik. |
Waktu kedaluwarsa kunci | lockExpireTime | Number | Tidak | Tidak | Tampak | Waktu ketika kunci kedaluwarsa. Ini adalah stempel waktu UNIX dalam milidetik. |
Waktu pembuatan | createTime | Number | Tidak | Tidak | Tampak | Waktu ketika akun dibuat. Ini adalah stempel waktu UNIX dalam milidetik. |
Waktu pembaruan | updateTime | Number | Tidak | Tidak | Tampak | Waktu ketika informasi pengguna terakhir diperbarui. Ini adalah stempel waktu UNIX dalam milidetik. |
2. Pengguna Aplikasi
Bidang-bidang berikut terdapat dalam model AppUser IDaaS. Anda dapat mereferensikannya menggunakan format seperti appUser.username.
Properti | Deskripsi |
username | Nama pengguna akun aplikasi. |
3. Pengguna IdP
Model Pengguna IdP digunakan untuk sinkronisasi dengan penyedia identitas. Sebagai contoh, bidang lokasi kantor untuk DingTalk adalah idpUser.work_place.
Untuk bidang spesifik, lihat dokumentasi untuk penyedia identitas yang sesuai, seperti Dokumen Bantuan DingTalk - Detail Pengguna.
Untuk penyedia identitas OIDC (lihat Menyambungkan Penyedia Identitas OIDC), ketika Anda menggunakan ekspresi dalam fitur lampiran otomatis, awalan idpUser. hanya berlaku untuk sub, phoneNumber, dan email dari id_token (contohnya, idpUser.sub). Untuk semua bidang lainnya, Anda harus menggunakan awalan idpUser.rawUserInfo. (contohnya, idpUser.rawUserInfo.aud).
Deskripsi fungsi
Tabel berikut menjelaskan fungsi yang tersedia dan memberikan contoh:
Nama Fungsi | Definisi Fungsi | Deskripsi | Contoh |
Append | Append(str1, str2, ..., strn) | Menggabungkan parameter input menjadi string baru. Ini setara dengan |
|
Join | Join(source1, source2, ..., sourceN, separator) | Menggabungkan beberapa nilai sumber menjadi satu string, dipisahkan oleh pemisah yang ditentukan. |
|
Coalesce | Coalesce(source1, source2, ..., sourceN, defaultValue) | Mengembalikan parameter pertama yang tidak kosong dari input. Jika semua parameter kosong, maka mengembalikan null. Parameter tidak kosong adalah bukan null dan memiliki panjang lebih besar dari 0. |
|
IIF | IIF(condition, whenTrue, whenFalse) | Operasi ternary. Mengembalikan nilai berdasarkan hasil kondisi. Jika kondisi benar, maka mengembalikan whenTrue. Jika kondisi salah, maka mengembalikan whenFalse. | Contoh 1:
Contoh 2:
|
IsNull | IsNull(value) | Jika nilai adalah null atau hilang, outputnya adalah true. | Contoh 1:
Contoh 2:
|
IsNullOrEmpty | IsNullOrEmpty(value) | Jika nilai adalah null atau string kosong, outputnya adalah true. | Contoh 1:
Contoh 2:
|
Now | Now() | Mengembalikan string yang mewakili DateTime UTC saat ini dalam format yyyy-MM-dd'T'HH:mm:ssXXX. |
|
StringReplace | StringReplace("hello $VariableName", "$VariableName", ReplaceString) | Melakukan penggantian string sederhana. |
|
Trim | Trim(source) | Menghapus karakter spasi putih di awal dan akhir string sumber. |
|
TrimLeft | TrimLeft(source) | Menghapus karakter spasi putih di awal string sumber. |
|
TrimRight | TrimRight(source) | Menghapus karakter spasi putih di akhir string sumber. |
|
ToLower | ToLower(source) | Mengonversi string menjadi huruf kecil semua. |
|
ToUpper | ToUpper(source) | Mengonversi string menjadi huruf besar semua. |
|
Substring | Substring(source, fromIndex, endIndex) | Mengembalikan substring dari string. Substring dimulai dari fromIndex dan berakhir sebelum endIndex.
| Contoh 1:
Contoh 2:
Contoh 3:
|
SubstringBefore | SubstringBefore(source, subString) | Mencari string sumber dari kiri ke kanan untuk string target dan mengembalikan substring yang mengikuti kemunculan pertama. Jika string target tidak ditemukan, null dikembalikan. Parameter:
Nilai kembali: string | Contoh 1:
|
Array | Array(source1, source2,...) | Menggabungkan beberapa nilai menjadi array. Nilai-nilai tersebut dapat berupa tipe Object. |
|
ArrayAdd | ArrayAdd(Array(), "test") | Menambahkan elemen ke objek array. |
|
ArrayMap | ArrayMap($ArrayObject, __item.ObjectProperty) | Membuat array baru dengan nilai properti tertentu dari array objek. | Dapatkan daftar ID grup untuk pengguna:
|
ArrayIndex | ArrayIndex(Array(), n) | Mendapatkan elemen pada indeks tertentu dalam array. Indeks dimulai dari 0. |
|
ArrayJoin | ArrayJoin(Array(), str) | Menggabungkan elemen-elemen array menjadi string, menggunakan pemisah yang ditentukan. |
|
Object | Object(key1, value1, key2, value2, ...) | Membuat Object dengan menggabungkan pasangan kunci-nilai. Mendukung nol atau jumlah parameter genap. |
|
ObjectIndex | ObjectIndex(user, "username") | Mendapatkan nilai properti tertentu dari sebuah objek. | Kode |
ObjectToJsonString | ObjectToJsonString(user.groups) | Mengonversi objek menjadi string JSON. | - |
Contains | Contains(str1,str2) | Memeriksa apakah sebuah string mengandung string lain. Mengembalikan true atau false. | Contoh 1:
Contoh 2:
|
Or | Or(true,false,...,true) | Melakukan operasi logika OR pada beberapa kondisi. Jika ada kondisi yang benar, hasilnya adalah true. | Contoh 1:
Contoh 2:
Contoh 3:
|
And | And(true,false,...,true) | Melakukan operasi logika AND pada beberapa kondisi. Jika ada kondisi yang salah, hasilnya adalah false. | Contoh 1:
Contoh 2:
Contoh 3:
|
xOr | xOr(true,false,...,true) | Membutuhkan tepat dua kondisi. Mengembalikan false jika kedua kondisi benar atau keduanya salah. Mengembalikan true jika satu kondisi benar dan yang lain salah. | Contoh 1:
Contoh 2:
Contoh 3:
|
StartsWith | StartsWith(str1, str2) | Memeriksa apakah sebuah string dimulai dengan awalan tertentu. Fungsi ini memerlukan tepat dua parameter. | Contoh 1:
Contoh 2:
|
Split | Split("str1,str2,str3") | Memisahkan string menjadi array substring. | Contoh 1:
|
Equals | Equals(str1,str2) | Membandingkan dua string untuk kesetaraan. Equals(str1,str2). Equals(str1,str2,false) melakukan perbandingan sensitif huruf besar-kecil. Equals(str1,str2,true) melakukan perbandingan tidak sensitif huruf besar-kecil. | Contoh 1:
Contoh 2:
Contoh 3:
|
CurrentTimeMillis | CurrentTimeMillis() | Stempel waktu UNIX saat ini dalam milidetik. | - |
SamlArray | SamlArray(Array()) | Hanya tersedia untuk SAML SSO. | Input:
<saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:type="xsd:string"> group1 group2
|
ExtractPhoneRegion | ExtractPhoneRegion(source, defaultRegion,autoAppendPlusSignal) | Mengekstrak kode area dari nomor telepon.
| Contoh 1: Jika nomor telepon adalah
Contoh 2: Jika nomor telepon adalah
Contoh 3: Jika nomor telepon adalah
|
ExtractPhoneNumber | ExtractPhoneNumber(source, defaultRegion,autoAppendPlusSignal) | Mengekstrak nomor telepon tanpa kode area.
| Contoh 1: Jika nomor telepon adalah
Contoh 2: Jika nomor telepon adalah
Contoh 3: Jika nomor telepon adalah
|
Contoh referensi
Hasil | Contoh ekspresi |
Dapatkan nama pengguna dan tambahkan string tetap "@example.com". |
|
Jika email tidak kosong, kembalikan email. Jika email kosong, kembalikan nomor telepon. |
|
Jika nomor telepon kosong, gunakan nomor telepon tetap sebagai default. |
|
Gabungkan kode wilayah telepon dan nomor telepon dengan tanda hubung (-). |
|
Kembalikan pesan selamat datang kustom yang mencakup nama tampilan. |
|
Masker empat digit tengah nomor telepon dengan tanda bintang (*). |
) |
Ekstrak nama pengguna dari alamat email. |
|
Rakit bidang email dalam format array yang ditentukan oleh Sistem untuk Protokol Manajemen Identitas Lintas-Domain (SCIM). |
|
Contoh JSON model pengguna:
{
"customFieldMap": {
"place": {
"fieldName": "place",
"fieldValue": "beijing"
},
"age": {
"fieldName": "age",
"fieldValue": "18"
}
},
"identityProviderUserMap": {
"idp_m2gngriuenktdkxxxxxx": {
"identityProviderId": "idp_m2gngriuenktdkxxxxxx",
"identityProviderType": "ding_talk",
"identityProviderExternalId": "corp_1234xxxxxxx",
"identityProviderUserId": "b2ed5fc0xxxxx"
}
},
"organizationalUnits": [
{
"organizationalUnitId": "ou_sdfadtaaxxxxxx",
"organizationalUnitName": "name_001",
"primary": false
},
{
"organizationalUnitId": "ou_werttxxxxxx",
"organizationalUnitName": "name_002",
"primary": true
}
],
"primaryOrganizationalUnitId": "ou_werttxxxxxx",
"customFields": [
{
"fieldName": "place",
"fieldValue": "beijing"
},
{
"fieldName": "age",
"fieldValue": "18"
}
],
"groups": [
{
"groupId": "group_jp6al4sn4n4wjgjxxxxxx",
"groupName": "group1",
"groupExternalId": "group_jp6al4sn4n4wjgjxxxxxx"
},
{
"groupId": "group_vavikcxewkf5h3oxxxxxx",
"groupName": "group2",
"groupExternalId": "group_vavikcxewkf5h3oxxxxxx"
}
],
"userId": "user_x3zyd6cxxxxxxxxxxxxx",
"username": "name_001",
"displayName": "displayname_001",
"passwordSet": true,
"phoneRegion": "86",
"phoneNumber": "333xxxx3333",
"phoneNumberVerified": true,
"email": "xxxxx@example.com",
"emailVerified": true,
"userExternalId": "b2ed5fc0xxxxxxxxxx",
"userSourceType": "ding_talk",
"userSourceId": "corp_1234xxxxxxx",
"status": "enabled",
"accountExpireTime": "-1",
"passwordExpireTime": "-1",
"registerTime": "1730454581598",
"lockExpireTime": "-1",
"createTime": "1730454582379",
"updateTime": "1733479455307"
}