属性関数

構成 API のサンプルおよび構文を使用して、カスタム関数を作成できます。

概要

関数を使用して、シングル・サインオン認証トークンの形式で、またはアカウントのプロビジョニング時に属性値をアプリケーションに渡す前に、属性値を参照、変換、および結合します。 IBM® Verify関数からは、への認証に使用されるIDソースの認証情報、Cloud Directoryに保存されているユーザーオブジェクト(SCIM形式)、および任意の外部APIエンドポイントにアクセスできます。 例えば、formalDisplayNameという属性を固定値属性として作成し、user.name.givenNameuser.name.familyNameを指定した方法で連結する関数を指定することができます。
注: この関数の構文は、Cおよび JavaScript™ に準拠しています。 ただし、これは単一行式言語である Google 共通式言語拡張(Common Expression Language Extension)に基づいています。

詳細なルール属性を設定するには、管理コンソールで [ディレクトリ ] > [属性] に移動します。 その後、他のすべての属性タイプと同様に、アプリケーション設定でこれらの属性をマッピングします。

ドメインオブジェクト

「ドメイン・オブジェクト」という用語は、属性のカスタム関数でアクセスできるすべてのオブジェクトを示すための包括的な表現です。

クラウド・ディレクトリー・ユーザー

認証を行う Verify ユーザーごとに、Cloud Directory にユーザーアカウントが作成されます。 このアカウントは SCIM オブジェクトとして表されます。 次の例では、以下のクラウド・ディレクトリー・ユーザー・アカウントが使用されています。

以下の SCIM オブジェクトがユーザー・アカウントです。
{
  "id": "600000A3DD",
  "userName": "google-oauth2|1033116550041553242@jke.samlfed.com",
  "emails": [
    {
      "type": "work",
      "value": "jessica@jke.com"
    }
  ],
  "meta": {
    "created": "2019-04-26T09:21:35Z",
    "location": "https://jke.cloudidentity.com/v2.0/Users/600000A3DD",
    "lastModified": "2019-04-26T09:21:35Z",
    "resourceType": "User"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User",
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
    "urn:ietf:params:scim:schemas:extension:ibm:2.0:User"
  ],
  "name": {
    "formatted": "Jessica Hill",
    "familyName": "Hill",
    "givenName": "Jessica"
  },
  "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
    "manager": {
      "value": "6030101TP6"
    }
  },
  "urn:ietf:params:scim:schemas:extension:ibm:2.0:User": {
    "userCategory": "federated",
    "twoFactorAuthentication": false,
    "realm": "jke.samlfed.com",
    "unqualifiedUserName": "google-oauth2|1033116550041553242",
    "customAttributes": [
        { 
          "name": "car",
          "values": [ "Ford Mustang Mach-E", "Maruti Suzuki 800" ]
        },
        {
          "name": "hobbies",
          "values": [ "Reading", "Running", "Gaming", "Star Wars" ]
        }
    ]
  },
  "active": true
}
hobbies注: SCIMオブジェクトには、2つのカスタム属性が定義されています。それらは car と です。 これらの属性は、管理コンソールを使用して構成できるスキーマ拡張です。 Verify 値は、Users API を通じてユーザーオブジェクトに追加できます。
構文 説明
user.$property $property にアクセスします。 .[".."]の両方を使用できます。
user.name.familyName + ", " + user.name["givenName"]

結果:

Hill, Jessica
user.$values.filter(x, $condition) $values: 1 つのリスト。 filter関数は、$conditionに基づいて値を抽出します。
user.emails.filter(x, x.type == "work")[0].value

結果:

jessica@jke.com
user.getCustomValues($attrName) カスタム属性の値をリストとして取得する関数。 $attrName: ユーザーオブジェクト内の属性が存在しない場合、その属性の名前はnullを返します。
user.getCustomValues("car")

結果:

["Ford Mustang Mach-E","Maruti Suzuki 800"]
user.getCustomValue($attrName) リスト内の最初のカスタム属性値を取得する関数。 $attrName: ユーザーオブジェクト内の属性名。その属性が存在しない場合は、空の文字列("")を返します。
user.getCustomValue("hobbies")

結果:

Reading
user.getManager() 現在のユーザーのマネージャー情報を取得する関数。 この関数は、マネージャーのユーザー・アカウントを (SCIM オブジェクトとして) 返します。 ユーザーに対してマネージャーが指定されていない場合は、空の JSON オブジェクトが返されます。 マネージャーオブジェクトが返された場合、ユーザーオブジェクトと同様に使用できます。つまり、このオブジェクトに対してさまざまな関数を呼び出すことができます。
user.getManager().name.formatted

結果:

Jacob Jones
user.getRoles() 現在のユーザーの権限を取得する関数。 この関数は、ユーザーの権限リストをJSONオブジェクトとして返します。 権限の一覧が返された場合、それをJSONオブジェクトとして使用できます。
user.getRoles().resources[0].name

結果:

Basic access
user.getFIDO2Registrations($search) 現在のユーザーの FIDO2 登録情報を取得する関数。 この関数は、そのユーザーに紐づく FIDO2 の登録リストを返します。 検索パラメータ $search は、必要に応じて指定することができます。 対応している検索パラメータについては、こちらをご覧ください: https://docs.verify.ibm.com/verify/reference/getfidoregistrations_v20
user.getFIDO2Registrations("enabled=true").fido2[0].enabled

結果:

true
user.getFIDO2RegistrationByID($id) $idID が指定された現在のユーザーの FIDO2 登録情報を取得する関数。
user.getFIDO2RegistrationByID("e8bf1dac-8245-452b-b7c4-8a700a1eb078").fido2[0].id

結果:

e8bf1dac-8245-452b-b7c4-8a700a1eb078
user.getDynamicGroups() 現在のユーザーの動的グループを取得する関数。 この関数は、ユーザーの動的グループのリストをJSONオブジェクトとして返します。
user.getDynamicGroups().resources[0].name

結果

Security department manager

ユーザー管理機能

Cloud Directory内のユーザーに対して読み取り、作成、更新の操作を行う必要がある場合、CELxでは以下の機能が利用可能です。

これらの関数の戻り値は、以下に定義するmapオブジェクトです。 これにより、CELx関数内でエラー処理を柔軟に行うことが可能になります。 が空文字列の場合 error 、操作は正常に完了したことを意味します。
{
"result": <result of the operation>,
"error": <error message, in case of failures>
}
構文 説明
findUsers($filter) この関数は、指定されたフィルタ条件に一致するユーザーのリストを返します。

$filter: GET Users API で定義されている形式に従って、照合条件を指定する文字列。 検索結果の表示件数には、最大10件という制限が設けられています。

一致するユーザーが見つからない場合は、空のリストが返されます。

findUsers('emails ew "@jke.com"')
findUsers($filter, $attributes) この関数は、指定されたフィルタ条件に一致するユーザーのリストを返します。 $attributes 一致した各ユーザーについて、引数で指定された属性が返されます。

$filter: 照合条件を定義する文字列。

$attributes: 結果として返されるべき scimNames の文字列配列。

GET Users API で定義されているクエリパラメータの形式を参照してください。 検索結果の表示件数には、最大10件という制限が設けられています。

一致するユーザーが見つからない場合は、空のリストが返されます。

findUsers('emails ew "@jke.com"', ["emails", "name.givenName"])
findUsers($filter, $attributes, $count) この関数は、指定されたフィルタに一致するユーザーのリストを、最大$count件まで返します。 $attributes 一致した各ユーザーについては、引数で指定された属性のみが返されます。

$filter: 照合条件を定義する文字列。

$attributes: 結果として返されるべき scimNames 型の文字列配列。

$count: 返すユーザーの最大数を指定する整数。最大値は10です。 10を超える値は無視され、10に設定されます。 GET Users API で定義されているクエリパラメータの形式を参照してください。

一致するユーザーが見つからない場合は、空のリストが返されます。

findUsers('emails ew "@jke.com"', ["emails", "name.givenName"], 3)
findUser($filter) この関数は、指定されたフィルタに一致するユーザーを1人返します。

$filter: GET Users API で定義されている形式に従って、一致条件を指定する文字列。

複数のユーザーが一致した場合、または一致するユーザーがいない場合、エラーが返されます。

findUser('emails eq "jessica@jke.com"')
findUser($filter, $attributes) この関数は、指定されたフィルタに一致するユーザーを1人返します。 ユーザーは、引数 $attributes で指定された属性のみを返します。

$filter: 照合条件を定義する文字列。

$attributes: 結果として返されるべき scimNames の文字列配列。 GET Users API で定義されているクエリパラメータの形式を参照してください。

複数のユーザーが一致した場合、または一致するユーザーがいない場合、エラーが返されます。

findUser('emails eq "jessica@jke.com"', ["emails", "name.givenName"])
getUser($uid) $uidこの関数は、指定されたと関連付けられているユーザーを返します。 そのユーザーが存在しない場合、エラーが返されます。
getUser("504K8664N6")
createUser($m) この関数は、指定された属性値を持つユーザーを作成します。

$m: 属性ID/名称と、ユーザーにとって望ましい値の対応表。

属性IDは、GET Attributes API のレスポンスで確認できます。 IDと属性名は、どちらを使っても構いません。

および username 属性の値は email 必須です。 その他の値は任意です。

新しいユーザーのパスワードを指定するには、$m に「name password 」というプロパティを追加し、その値として平文のパスワードを設定してください。

result成功した場合、作成されたユーザーSCIMオブジェクトが.で返されます。

createUser({'3':'jessica@jke.com', 'userName':'Jessica', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'Manager', 'hobbies':['Reading', 'Swimming'], '6': 'Jessica', '7': 'Doe'})
createUser($m, $opts) この関数は、指定された属性値と追加のオプションを使用してユーザーを作成します。

$m: 属性ID/名称と、ユーザーにとって望ましい値の対応表。

$opts: ユーザー作成時に指定可能な追加オプションの一覧。

属性IDは、GET Attributes API のレスポンスで確認できます。 IDと属性名は、どちらを使っても構いません。

および username 属性の値は email 必須です。 その他の値は任意です。 新しいユーザーのパスワードを指定するには、に $m プロパティを追加し、プロパティ名を password 、値に平文のパスワードを設定してください。

現在、$opts では以下のプロパティが使用可能です:

  • notifyType : このプロパティは、ユーザーに送信する通知の種類を指定します。 EMAILデフォルトは. です。
  • notifyPassword : ユーザーに送信される通知にユーザーのパスワードを含めるかどうかを示すブール値。 trueデフォルトは. です。 NONEが に設定されている場合 notifyType 、この属性は適用されません。
  • notifyManager : ユーザーのパスワードが設定または変更された際に、ユーザーのマネージャー(設定されている場合)へ通知を送信するかどうかを示すブール値。 falseデフォルト値は. です。 NONEが に設定されている場合 notifyType 、この属性は適用されません。
  • acceptInitialPassword : true に設定すると、初回ログイン時にユーザーがパスワードを変更する必要がなくなります。

result成功した場合、作成されたユーザーSCIMオブジェクトが.で返されます。

createUser({'3':'jessica@jke.com', 'userName':'Jessica', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'Manager', 'hobbies':['Reading', 'Swimming'], '6': 'Jessica', '7': 'Doe'}, {'notifyType':'NONE', 'acceptInitialPassword': 'true'})
updateUser($uid, $m)

この関数は、指定された属性値で指定されたユーザーを更新します。

$uid: 更新対象のユーザーのID。

$m: 属性ID/名称と、ユーザーにとって望ましい値の対応表。

属性IDは、GET Attributes API のレスポンスで確認できます。 IDと属性名は、どちらを使っても構いません。

更新が成功すると、結果として文字列が返されます success 。 userオブジェクトは返されません。

updateUser('6050007SGF', {'3':'jessica@redbank.com', '3f31edcf-19e8-46a4-b87e-e50c25dc1358':'President', 'mobile_number': '502513585', 'work_country': 'Singapore'})
ID ソースの資格情報
Verifyユーザーが にログインすると、ID ソースの認証情報属性がログインセッションに追加され、カスタム関数からアクセスできるようになります。 ユーザーが SAML フェデレーテッド ID プロバイダーを使用してログインし、SAML アサーションにuserRolesという属性ステートメントが含まれていて、それがmarketingおよびhelpdeskに設定されているとします。
idsuser属性は、ストリング・キーとストリング配列値を持つマップとして使用できます。 例えば、以下のとおりです。
{
  "userRoles": ["marketing", "helpdesk"],
  "displayName": ["Jessica J. Hill"],
  "phone": ["+12324321234"],
  "employeeId": "eid1234"
}
構文 説明
idsuser.$property $propertyにアクセスします。 idsuserの値は、常にストリングの配列です。
idsuser.userRoles[1]

結果:

helpdesk
idsuser.getValue($property) $propertyの値をストリングとして返します。 値の配列に複数の項目がある場合は、最初の項目が返されます。 $propertyが存在しない場合は、空ストリングが返されます。
idsuser.getValue('userRoles') 

結果:

"Marketing"
idsuser.getValues($property) $propertyのすべての値をストリング配列として返します。 $propertyが存在しない場合は、nilオブジェクトが返されます。
idsuser.getValues('userRoles') 

結果:

["Marketing", "helpdesk]"
HTTP 要求コンテキスト

IBM Verifyユーザーが にログインすると、カスタム関数内で受信した HTTP リクエストのコンテキストにアクセスできます。 ユーザーが OAuth フローを使用してログインし、クライアントがclient-ipuser-agentの情報を送信した場合、requestContextはその情報を抽出できます。 これを使用して外部エンドポイントにコールアウトし、ユーザーのリスク・スコアを判別できます。

requestContextは、ストリング・キーとストリング配列値を持つマップとして使用できます。 例えば、以下のとおりです。
{
  "User-Agent": ["Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"],
  "devicePlatform": ["MACOS"],
  "x-forwarded-for": ["116.15.12.181"]
}
表 1. HTTP リクエストのコンテキスト
構文 説明
requestContext.$property $propertyにアクセスします。 requestContextの値は、常にストリングの配列です。
requestContext.devicePlatform[1]

結果:

MACOS
requestContext.getValue($property) $propertyの値をストリングとして返します。 値の配列に複数の項目がある場合は、最初の項目が返されます。 $propertyが存在しない場合は、空ストリングが返されます。
requestContext.getValue('x-forwarded-for')

結果:

116.15.12.181
requestContext.getValues($property) $propertyのすべての値をストリング配列として返します。 $propertyが存在しない場合は、Nil オブジェクトが返されます。
requestContext.getValues('x-forwarded-for')

結果:

["116.15.12.181"]
属性コンテキスト
コンテキスト・オブジェクトは、関数の作成時に使用できる属性の特定プロパティーのキーと値のペアを保持します。 これらのプロパティーの値は、その属性のルックアップのコンテキストでのみ有効です。 このオブジェクトには、ctxキーを使用してアクセスできます。
コンテキスト・オブジェクトでは、以下のプロパティーを使用できます。
構文 説明
ctx.currentValue この関数の実行前に評価された属性値にアクセスします。 この値のデータ型は、属性構成で指定します。 値をデータ型にキャストできない場合、この値はヌルに設定されます。
ctx.currentValue.toUpper

標準演算子

属性関数でサポートされる演算子には、どのプログラミング言語でも使用できる標準の演算子が含まれます。 例えば、+-*/><などです。+を使用して、ストリングを連結できます。
演算子 説明
== 等しいかどうか比較
user.name.givenName == "Jessica"
!= 等しくないかどうか比較
idsuser.myroles[0] == "marketing"
|| 論理 OR 比較
user.name.givenName == "Jessica" || user.name.formatted.startsWith("Hill")
&& 論理 AND 比較
1 == 1 && 2 == 2
[ ] マップ・アクセス
user["name"]["givenName"]
+ 連結および追加 (型に基づく)
"Hello" + " " + "World"
- 減算
10 - 5
* 乗算
5 * 2
/ 除算
20 / 4
> 条件より大
1 > 2
< 条件より小
1 < 2
>= Greater than or equal to
1 >= 1
<= Less than or equal to
1 <= 1
? 三項演算子
a == b ? true : false

標準関数

属性関数では、標準関数を使用して、属性値の操作やリスト内のエレメントへのアクセスなどのタスクを実行できます。
表 2. 文字列関数
構文 説明
$string.contains($fragment) $string の中に $fragment が含まれているかどうかを確認します。
"helloworld".contains("hello")

結果:

true
$string.endsWith($fragment) $string $fragmentで終了するかどうかを検査します。
"hello world".endsWith("old")

結果:

false
$string.matches($regex) $regex$string内のパターンと一致するかどうかを検査します。
"foo".matches("k.*")

結果:

false
$string.toUpper() $stringを大文字に変換します。
"hello".toUpper()

結果:

HELLO
$string.toLower() $string を小文字に変換します。
"HEllO".toLower()

結果:

hello
$string.base64Encode() Base64 encodes $string
"hello".base64Encode()

結果:

aGVsbG8=
$string.base64Decode() Base64 は$stringをデコードします。
"aGVsbG8=".base64Decode()

結果:

hello
$string.base64URLEncode() Base64URL $string をエンコードします。
"hello_world!".base64URLEncode()

結果:

aGVsbG9fd29ybGQh

$string.base64URLDecode() Base64URL $string をデコードします。
"aGVsbG9fd29ybGQh".base64URLDecode()

結果:

hello_world!

$string.size() $stringのサイズ
"hello".size()

結果:

5
$string.substring($begin,$end) $begin index (including)$end index (excluding)の間のストリングを返します。
"hello".substring(1,4)

結果:

ell
$string.split($delim) $delimによって分割されたストリングの配列を返します。
"hello".split("e")

結果:

["h","llo"]
$string.replaceAll($old,$new) $oldのすべてのオカレンスを$newに置き換えます。
"hello".replaceAll("l","p")

結果:

heppo
$string.matchAndReplaceAll($regex, $newStr) $regexのすべての一致を$newStrに置き換えます。
"some12#$text".matchAndReplaceAll("[^a-zA-Z]+", "-")

結果:

some-text
$string.indexOf($str) $str. が最初に現れる位置のインデックスを返します。
"hello".indexOf("l")

結果:

2
$string.lastIndexOf($str) $str. が最後に現れた位置のインデックスを返します。
"hello".lastIndexOf("l")

結果:

3
表 3. リスト関数
構文 説明
$values.size() リストのサイズ$values
["hello", "world"].size()

結果:

2

$values.filter(x, $condition) $values$conditionでフィルタリングします。
["hello", "world", "helios"].filter(x,
            x.startsWith("hel"))

結果:

["hello", "helios"]

$values.all(x, $condition) すべての$values$conditionを満たすかどうかを検査します。
["hello", "world", "helios"].all(x,
            x.contains("hel"))

結果:

false

$values.exists(x, $condition) $conditionを満たす値があるかどうかを検査します。
["hello", "world", "helios"].exists(x,
            x.contains("hel"))

結果:

true

$values.exists_one(x, $condition) $conditionを満たす値が 1 つだけあるかどうかを検査します。
["hello", "world", "helios"].exists(x,
            x.contains("hel"))

結果:

false

$values.map(x, $op) 各値に対して$opを実行します。
["hello", "world", "helios"].map(x, x.toUpper())

結果:

["HELLO","WORLD","HELIOS"]

stringToJson($s) 文字列 $s を JSON 配列に変換します。
stringToJson('[{\"hello\":\"world\"},{\"key\":\"value\"}]')

結果:

[{"hello":"world"},{"key":"value"}]

jsonToString($json) リスト$jsonをストリングに変換します。
jsonToString(["hello","world","helios"])

結果:

"[\"hello\",\"world\",\"helios\"]

joinStrings($values, $s) リスト $ 値内のストリングを分離文字 $s と結合します。
joinStrings(['hello','world','helios'], ' + ')

結果:

"hello + world + helios"

$values.flatten() リストのリスト $values を単一のリストに変換します。
[[1,2],["a","b","c"]].flatten()

結果:

[1,2,"a","b","c"]

注: Mapオブジェクトに対してもList関数を実行することができます。 この関数は、マップ内のキーのリストに対して実行されます。 例えば、入力に以下が含まれているとします。
{
idsuser: {
"attr1":"value1",
"attr2":"value2"
}
}
関数idsuser.exists(x, $condition)の場合、x は[ "attr1", "attr2" ]です。
表4. ハッシュ関数
構文 説明
sha256($value) 指定したストリングの sha256 ハッシュ値を計算します。 出力は、16進数の値を文字列で表したものです。
sha256('hello')

結果:

`2cf24dba...`

sha512($value) 指定したストリングの sha512 ハッシュ値を計算します。 出力は、16進数の値を文字列で表したものです。
sha512('hello')

結果:

`9b71d224...`

hmacSha1($value, $key) 指定されたストリングについて、キー$keyを使用して HMAC-SHA1 値を計算します。 出力は、16進数の値を文字列で表したものです。
hmacSha1('hello','key')

結果: b34ceac4516ff23a143e61d79d0fa7a4fbe5f266

表5. Hex/Base64 機能
構文 説明
base64ToHex($value) base64-encoded 形式の文字列 $value を16進数に変換します。
base64ToHex('Gis8Tw==')

結果:

1a2b3c4f

hexToBase64($value) 16進数の値 $value を、 base64-encoded 形式の文字列に変換します。
hexToBase64('1a2b3c4f')

結果:

Gis8Tw==

base64URLEncodedToHex($value) base64URL-encoded 形式の文字列 $value を16進数に変換します。
base64URLEncodedToHex('Gis8TV5v')

結果:

1a2b3c4d5e6f

hexToBase64URLEncoded($value) 16進数の値 $value を、 base64URL-encoded 形式の文字列に変換します。
hexToBase64URLEncoded('1a2b3c4d5e6f')

結果:

Gis8TV5v

表6. マップ関数とオブジェクト関数
構文 説明
has($m.$p) マップ $m にプロパティ $p が含まれているか確認してください。
has({ "hello": "world" }.hello)

結果:

true

has($m, $p) マップ$mにプロパティー$pが含まれているかどうかを検査します。 これは、特殊文字(ドットなど)を含むプロパティ名の場合に便利です。
has({ "email.address": "abc@email.com"}, "email.address")

結果:

true

jsonToString($m) マップ $m を文字列に変換する
jsonToString({"hello":"world"})

結果:

"{\"hello\":\"world\"}"

stringToJson($s) 文字 $s 列をマップに変換します。
stringToJson("{\"hello\":\"world\"}")

結果:

{"hello": "world"}

jsonToFormURLEncoded($m, $doUrlEncode) マップ$mをフォームに変換します。 trueが に設定されている場合 $doUrlEncode 、フォームは URL エンコードされます。
jsonToFormURLEncoded({'hello':'world', 'key1':'value 1'}, true)

結果:

"hello=world&key1=value+1"

$m.put($k, $v) 型が文字列のキー $k `key` と、型がオブジェクトの値 $v `value` をマップ `$m` に追加します。 $v$kマップ $m にキーに対応する値がすでに存在していた場合、その値は新しい値に置き換えられます。
{"hello": "world"}.put("key1",
    "value1")

結果:

"{"hello": "world", "key1": "value1"}
$m.putAll($v) $mmap $v の内容を map に挿入します。 $v$vマップ $m に、マップ内に存在するキーに対する値が以前に存在していた場合、マップ $m 内の古い値は、マップ内の値に置き換えられます。
{"hello": "world"}.putAll({"key1": "value1", "test":
      true})

結果:

"{"hello": "world", "key1": "value1", "test": true}
$m.remove($k) マップ $m に文字列型のキー $k が存在する場合、そのマッピングを削除します。
{"hello": "world", "key1":
    "value1"}.remove("key1")

結果:

{"hello": "world"}
$m.removeAll($l) $l マップ $m に指定されたキーのリストに対するすべてのマッピングが存在する場合、それらを削除します。
{"hello": "world", "key1": "value1", "test":
      true}.removeAll(["key1", "test"])

結果:

{"hello": "world"}
注: 名前に文字を予約しているプロパティが存在するか確認するには、List関数 exists を使用してください。
idsuser.exists(x, x == "ext:idsource_attr1")
プロパティーが存在する場合はtrueを返し、存在しない場合はfalseを返します。
表7. タイムスタンプ関数
構文 説明
now 現在時刻のタイム・スタンプ・オブジェクトを返します。
now

結果:

"2021-08-17T08:24:58Z"
timestamp($s) 入力文字列 $s を RFC3339 に基づいて変換し、タイムスタンプオブジェクトを返します。
timestamp(1629188698)

結果:

"2021-08-17T08:24:58Z"

$t.getDate() タイム・スタンプ$tの日付を整数の 1 ベースのインデックス付けとして返します。
timestamp('2021-08-17T08:24:58Z').getDate()

結果:

17
$t.getDayOfMonth() タイム・スタンプ$tの日付を、ゼロ・ベースの整数のインデックス付けとして返します。
timestamp('2021-08-17T08:24:58Z').getDayOfMonth()

結果:

16
$t.getDayOfWeek() タイム・スタンプ$tの曜日を、ゼロを基準とした整数 (日曜日の場合) として返します。
timestamp('2021-08-17T08:24:58Z').getDayOfWeek()

結果:

2
$t.getDayOfYear() タイム・スタンプ$tから年間通算日を整数 (ゼロ・ベースの索引付け) として返します。
timestamp('2021-08-17T08:24:58Z').getDayOfYear()

結果:

228
$t.getMonth() タイム・スタンプ$tの月を、ゼロ・ベースの整数のインデックス付けとして返します。
timestamp('2021-08-17T08:24:58Z').getMonth()

結果:

7
$t.getFullYear() タイム・スタンプ$tから年を整数として返します。
timestamp('2021-08-17T08:24:58Z').getFullYear()

結果:

2021
$t.getHours() タイムスタンプ $t から時間を整数として返します。
timestamp('2021-08-17T08:24:58Z').getHours()

結果:

8
$t.getMinutes() タイム・スタンプ$tから分を整数として返します。
timestamp('2021-08-17T08:24:58Z').getMinutes()

結果:

24
$t.getSeconds() タイム・スタンプ$tから秒を整数として返します。
timestamp('2021-08-17T08:24:58Z').getSeconds()

結果:

58
$t.getMilliseconds() タイム・スタンプ$tからミリ秒を整数として返します。
timestamp('2021-08-17T08:24:58.642Z').getMilliseconds()

結果:

642
int($t) int64 タイムスタンプを、UNIX®エポックからの秒数に変換します。
int(timestamp('2021-08-17T08:24:58Z'))

結果:

1629188698
duration($d) 期間$dは、秒単位の期間を示す「s」で終わるストリングとして指定する必要があります。
timestamp('2021-08-17T08:24:58Z') + duration('3600s')

結果:

"2021-08-17T09:24:58Z"
formatTime($t, $s) タイム・スタンプ$t$sの形式で返します。 は $s 、希望する形式で「Monday, 02-January-06 15:04:05 MST」という基準時刻を使用する必要があります。
formatTime(timestamp('2021-08-17T08:24:58Z'), 'Monday, 02-Jan-06 15:04:05 MST')

結果:

"Tuesday, 17-August-21 08:24:58 UTC"

表8. URIエンコードおよびデコード関数
構文 説明
encodeURI($uri) 指定された文字列 $uri を URI としてエンコードした文字列を返します。 A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #このメソッドは、以下の文字を除くすべての文字をエスケープします:.
encodeURI('test.html?name=Jürgen&car=audi')

結果:

"test.html?name=J%C3%BCrgen&car=audi"
decodeURI($uri) $uriエンコードされたURIをデコードした結果を文字列として返します。
decodeURI('test.html?name=J%C3%BCrgen&car=audi')

結果:

"test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi"
encodeURIComponent($uri) 指定された文字列 $uri を URI コンポーネントとしてエンコードした文字列を返します。 A-Z a-z 0-9 - _ . ! ~ * ' ( )このメソッドは、以下の文字を除くすべての文字をエスケープします:.
encodeURI('test.html?name=Jürgen&car=audi')

結果:

"test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi"
decodeURIComponent($uri) $uriエンコードされたURIコンポーネントのデコード済みバージョンを表す文字列を返します。
decodeURIComponent('test.html%3Fname%3DJ%C3%BCrgen%26car%3Daudi')

結果:

"test.html?name=Jürgen&car=audi"

UUID関数

構文 説明
genUUID() RFC 4122 および DCE( 1.1: )認証およびセキュリティサービスに基づいて UUID を生成します。
genUUID()

結果:

4eb1a3f3-5461-4b91-8d69-69e25f2a1b6a

型および変換関数

構文 説明
type($value) $value. の型を返します。
type(1234)

結果: "int"

type("hello")

結果:

"string"
bool($string) 文字列 $string をブール値に変換します。 "TRUE""true"の許容値は、 "True"true 、および です。

"FALSE""false"の許容値は、 "False"false 、および です。

bool("true")

結果:

true

bool("FALSE")

結果:

false
bytes($string) 文字列 $string をバイト列に変換します。
bytes("Hello")

結果:

"aGVsbG8="
double($value) 値を double $value 型に変換します。 は $value 、int、uint、またはstringのいずれかの型である必要があります。
double(10)/4.0

結果:

2.5

double("3.14")

結果:

3.14

int($value) 値を $value int 型に変換します。 は $value 、double、uint、string、enum、またはtimestampのいずれかの型である必要があります。 タイムスタンプが指定された場合、 Unix エポックに基づく秒単位の値が返されます。
int(10.0/4)

結果:

2

int(3.14)

結果:

3

int("123")

結果:

123

int(now)

結果:

1742801032
uint($value) 値を $value 符号なし整数に変換します。 は $value 、double、int、またはstringのいずれかの型である必要があります。
uint(3.14)

結果:

3

uint("123")

結果:

123
string($value) 値を文字列 $value に変換します。 は $value 、bool、int、uint、double、bytes、timestamp、またはdurationのいずれかの型である必要があります。 期間が指定された場合、その値は秒単位に変換され、秒の端数には「s」の接尾辞が付きます。 タイムスタンプが指定された場合、その値は RFC3339 形式に変換されます。
string(true)

結果:

"true"

string(1234)

結果:

"1234"
string(b'helllo')

結果:

"hello"
string(duration('1m100ms'))

結果:

"60.1s"

string(now)

結果:

"2025-03-24T07:42:51Z"

HTTP クライアント

外部 API エンドポイントにコールアウトして値を取得するために、属性関数を作成できます。
注:
  • コンシューマーによって許可ヘッダー・トークンを生成する必要があります。 例えば、関数に戻される、有効期間が長い API キーを使用できます。
構文 説明
hc.Get($url, $headers)

ステータスコード、レスポンスヘッダー、およびレスポンス本文を返します。レスポンス本文は、コンテンツタイプが application/json の場合は JSON オブジェクトとして、それ以外のコンテンツタイプの場合は文字列として返されます。 $url: URL APIエンドポイントのURLは、完全な URL でなければなりません

{"headerName":"headerVal"}$headers: JSON フォーム内のオブジェクト。

hc.Get("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"})

結果:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"value":"someValue"}}

hc.GetAsString($url, $headers) 応答をシリアライズされたストリングとして返します。 API エンドポイントの$url: URLは、{"headerName":"headerVal"}という形式の完全な URL $headers: JSONオブジェクトでなければなりません。
hc.GetAsString("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"})

結果:

"{\"value\":\"someValue\"}"

hc.GetAsJson($url, $headers) 応答を JSON オブジェクトとして解析します。 API エンドポイントの$url: URLは、{"headerName":"headerVal"}という形式の完全な URL $headers: JSONオブジェクトでなければなりません。
hc.GetAsJson("https://api.jke.com/resources/" + user.name.givenName, {"Authorization":"Some token"}).value

結果:

"someValue"

hc.Post($url, $headers, $body) 状況コード、応答ヘッダー、および応答本体を返し、応答本体は、コンテンツ・タイプがapplication/jsonの場合は JSON オブジェクトとして返され、その他のコンテンツ・タイプの場合はストリングとして返されます。

$url - APIエンドポイントの URL は、完全な URL でなければなりません。

$headers - {"headerName":"headerVal"} 形式の JSON オブジェクト

$body - ストリングの形式で本体を要求します。

hc.Post("https://api.jke.com/resources", {"Authorization": "Some token"}, "{\"key\":\"value\"}")

結果:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

hc.Patch($url, $headers, $body) ステータスコード、レスポンスヘッダー、およびレスポンス本文を返します。レスポンス本文は、コンテンツタイプが application/json の場合は JSON オブジェクトとして、それ以外のコンテンツタイプの場合は文字列として返されます。

$url: APIエンドポイントの URL は、完全な URL でなければなりません。

{"headerName":"headerVal"}$headers: 以下の形式のJSONオブジェクト。

$body: 文字列形式のリクエスト本文。

hc.Patch("https://api.jke.com/resources", {"Authorization": "Some token"}, "{\"key\":\"value\"}")

結果:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

hc.Put($url, $headers, $body) ステータスコード、レスポンスヘッダー、およびレスポンス本文を返します。レスポンス本文は、コンテンツタイプが application/json の場合は JSON オブジェクトとして、それ以外のコンテンツタイプの場合は文字列として返されます。

$url: APIエンドポイントの URL は、完全な URL でなければなりません。

{"headerName":"headerVal"}$headers: 以下の形式のJSONオブジェクト。

$body: 文字列形式のリクエスト本文。

hc.Put("https://api.jke.com/resources", {"Authorization": "Some token"},
      "{\"key\":\"value\"}")

結果:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}
hc.Delete($url, $headers) ステータスコード、レスポンスヘッダー、およびレスポンス本文を返します。 コンテンツタイプが application/JSON の場合、レスポンスボディは JSON オブジェクトとして返され、それ以外のコンテンツタイプの場合は文字列として返されます。

$url: APIエンドポイントの URL は、完全な URL でなければなりません。

$headers: フォーム内のJSONオブジェクト

{"headerName":"headerVal"}
hc.Delete("https://api.jke.com/resources", {"Authorization": "Some token"})

結果:

{"statusCode": "200", "responseHeaders": {"header": ["value1", "value2"]}, "responseBody": {"message": "success"}}

hc.Opts($options) $options: 8 フラグは現在サポートされています。
  1. insecure: SSL への接続が安全でない可能性があることを示しています。
  2. certLabel: CI テナントにアップロードされる署名者証明書のラベル。
  3. tlsMinVersion:サポートされる最小 TLS バージョン。 使用可能なオプションは TLSv1.0、TLSv1.1、TLSv1.2 です。 このフラグが未指定の場合、最小 TLS バージョンは TLSv1.2 に設定されます。
  4. followRedirects: HTTP クライアントがリダイレクトに従うかどうかを示します。 値が指定されていない場合、この設定はデフォルトで false になります。
  5. cache:応答がキャッシュされるかどうかを示すブール値。 この設定は、GET 呼び出しの場合はデフォルトで true になり、その他の HTTP メソッドの場合はデフォルトで false になります。
  6. cacheExpiry:キャッシュされた応答の存続時間 (秒単位、最大 1 時間 (3600))。 存続時間が指定されていない場合、この設定はデフォルトで 60 秒になります。
  7. mtls: 要求に対して相互 TLS を有効にするかどうかを示すブール値。 値が true に設定されている場合、フラグ insecure、certLabel、tlsMinVersion、followRedirects の値は無視されます。
  8. mtlsCert: MTLS 要求に対して提供される既存の個人証明書のラベル。
この関数はhcインスタンスで応答するため、GetAsJSONおよびGetAsStringを呼び出すことができます。
hc.Opts({"certLabel": "jkeCA","insecure":false,
"tlsMinVersion":"TLSv1.2", "followRedirects":true,"cache":true,
"cacheExpiry":"1200"}).GetAsString(...)
注: レスポンス本体のサイズ制限は、1回のリクエストにつき4MBまでです。
URL 制限事項
$protocol://$host[:$port]HTTP クライアントに指定するAPIエンドポイントの URL は、必ず「 URL 」という形式の完全なURLでなければなりません。
  1. $protocol 「http」または「https」のいずれかでなければなりません。
  2. $host 完全修飾ドメイン名(FQDN)でなければなりません。 IPアドレスは使用できません。
  3. ポート番号 $port は任意です。 HTTP クライアントでは、以下のポートがサポートされています。 それ以外のポートを使用すると、タイムアウトが発生します。
    • ポート80、443、および8088
    • ポート範囲 7000~7050
    • ポート範囲 8000~8050
HTTP クライアント応答キャッシング

デフォルトのキャッシュ有効期限が 1 分の GET 呼び出し (GetAsStringおよびGetAsJSON) の場合、HTTP 応答キャッシュはデフォルトで有効になっています。 POST 呼び出しの場合は、デフォルトで無効になっています。 HTTP クライアント応答キャッシュのデフォルト設定をオーバーライドするには、フラグcachetrueまたはfalseのいずれかの値でhc.Optsに組み込む必要があります。 デフォルトでは、キャッシュの存続時間は 60 秒に設定されています。 デフォルトのキャッシュ存続時間をオーバーライドするには、フラグcacheExpiryを、最大 3600 秒 (1 時間) までの秒単位の値でhc.Optsに組み込む必要があります。

適応型のリスク

適応型アクセスのリスク関数を使用して、現在のユーザー・セッションのリスク・レベルおよび関連する許可データにアクセスできます。

適応型アクセス・ポリシーは、カスタム属性を使用してデータが取り込まれるようにする前に、セッション内で少なくとも 1 回評価する必要があります。そうしないと、値“NOT_AVAILABLE”が返されます。

「アダプティブ・アクセス」のリスク機能を使用すると、 「アダプティブ・アクセス」ポリシールールの管理で説明されているように、ポリシーエディタに表示される対応するアクセスポリシーの条件にアクセスできます。

リスク指標の詳細については、 「リスクの兆候」 に記載されています。

リスク・データの重要指標はJSONとして構造化されており、次の例で確認できます。 このJSON構造には、risk.getAdaptiveSessionData()関数でアクセスできます。

このrisk.getRawAdaptiveSessionData()関数を使うと、ユーザーセッションに関連する完全な適応リスクデータ応答にアクセスできます。

{
  "riskLevel": "LOW", 
  "isNewDevice": false, 
  "isRiskyDevice": false, 
  "isRiskyConnection": false, 
  "remoteIP": "122.143.222.333", 
  "country": "ISR", 
  "city": "Jerusalem", 
  "isp": "013 Netvision", 
  "isNewLocation": false, 
  "behavioralAnomaly": false,
  "userBehavioralScore":"100"
}
構文 説明
risk.getAdaptiveSessionLevel() この関数は、ユーザーセッションのアダプティブ・リスク・レベルを返します。
risk.getAdaptiveSessionLevel()

結果:

"LOW"

risk.getAdaptiveSessionData() ユーザー・セッションに関連する適応型リスク・データの JSON 配列を返します。 接頭部isを持つプロパティーは、ブール値を返します。 それ以外のプロパティーはストリングを返します。
risk.getAdaptiveSessionData()

結果:

"behavioralAnomaly":false, 
"city":"Bundall", 
"country":"AUS", 
"isNewDevice":false, 
"isNewLocation":false, 
"isRiskyConnection":false, 
"isRiskyDevice":false, 
"isp":"Network Technology (AUST) P/L", 
"remoteIP":"120.29.43.158", 
"riskLevel":"LOW",
"userBehavioralScore":"100"
risk.getAdaptiveSessionData().($p) risk.getAdaptiveSessionData()この関数は、から個々のプロパティ $p を返します。
risk.getAdaptiveSessionData().isRiskyDevice

結果:

true
risk.getAdaptiveSessionData().isp

結果:

"Network Technology (AUST) P/L”

string注: アプリケーションの属性マッピングや、アクセスポリシーの評価におけるカスタム属性の条件設定で、抽出された適応型属性を使用する場合、データ型のキャストが必要になることがあります。これには、JSONからへの変換も含まれます。

例:

アクセスポリシーでの評価のために文字列値を返すには、まずその risk_score 値を文字列にキャストする必要があります。

 string(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score)

Advancedルールで数学または論理演算または評価を実行するには、最初にJSON番号をintにキャストししなければなりません。

 int(risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score) > 900
または二重として評価されます。
 risk.getRawAdaptiveSessionData()[1].message.pinpoint_assessment.risk.risk_score > 900.0

アプリケーション

特定のユースケース(プロビジョニングおよび照合)において、この app オブジェクトはCELxルール内で利用可能です。 このオブジェクトは、アカウントの同期に使用されているアプリケーションのJSONを表します。

この app オブジェクトは、ルール内ではそれ自体がマップとして扱えるほか、以下のヘルパーメソッドも備えています。
構文 説明
app.getSupportingData() アプリケーションの関連データを返します。
app.getSupportingData()

結果:

<JSON object representing supporting data>

OAuth

構文 説明
oauth.GetBearerToken($url, $clientId, $clientSecret) $clientIdこの関数は、client_credentials グラントタイプを使用して指定された $url トークンエンドポイントにリクエストを送信し、 clientId および clientSecret$clientSecret を指定します。成功した場合、アクセストークンを返します。
oauth.GetBearerToken("https://api.jke.com/token", "123456-abcd-efgh-9876-q1w2e3r4t5y6", "secret")

結果:

15PSJF576qi2LF658k30I1WLTwGOw2Vzage2AtiS

JWTの機能

構文 説明
jwt.sign($payload, $headers) この関数は、署名付きJSON Webトークン(JWT)を生成します。 この関数は2つの引数を受け取ります:
  • $payload: ここには、JSONオブジェクトであることが想定されるペイロードが含まれています。
  • algtypkid$headers: これには、、、などのヘッダーが含まれています。 は kid 、Verifyテナントに読み込まれた個人証明書のラベルです。
注: デフォルトの動作:
  • ヘッダーに が指定されていない場合 kid 、テナント内のデフォルトの個人証明書を使用してJWTに署名されます。
  • ヘッダーに が指定されていない場合 alg 、システムは RS256 を使用してJWTに署名します。
jwt.sign({'key1': 'value1', 'auth': ['lval3', 'lval4'], 'iat': 1696567390}, {'alg':'RS256','kid':'cert1'})

結果:

eyJhb...<truncated>...J6d5EzIU-ldnemMV75Q

デバッグ機能

デバッグ関数を使用すると、式を評価すると同時にトレースログを生成することができます。 トレースモードが有効になっている状態でルールが実行されると、トレースログが生成されます。 トレースモードの有効化やトレースログの表示に関する詳細については、 「フローの作成」 および 「トレースビューの管理」 の「トレース設定」を参照してください。

構文 説明
debug($expr, $logString) $logString$expr を評価し、デバッグログを生成します。

この関数は2つの引数を受け取ります:

  • $expr: 評価対象の式。
  • $logString: 生成されるログ文字列。 これは式であり、常に文字列として評価される必要があります。 $expr$value$logString には、の評価結果から得られる値を置換するために使用される文字列が含まれている必要があります。
debug("jessica@jke.com".split("@")[1], "The email domain is $value")

結果:

jke.com

以下のトレースログも生成されます:「The email domain is jke.com」。

debug($expr, $logString, $metadata) $expr を評価し、追加のカスタムメタデータを含むデバッグログ $logString を生成します。

この関数は3つの引数を受け取ります:

  • $expr: 評価対象の式。
  • $logString: 生成されるログ文字列。 これは式であり、常に文字列として評価される必要があります。 $expr$value$logString には、の評価結果から得られる値を置換するために使用される文字列が含まれている必要があります。
  • $metadata: ログと共に送信されるカスタムメタデータ。これらはキーと値のペアからなるマップとして提供されます。 各ペアの値は式にすることができますが、その式は文字列として評価される必要があります。
debug("jessica@jke.com".split("@")[1], "The email domain is $value", {"flow":
      "login", "time": string(now)})

結果:

jke.com
また、以下のトレースログも生成されます:「The email domain is jke.com」には、以下のメタデータフィールドが含まれます:
  • "flow": "login"
  • "time": "< timestamp >"

キャッシュ関数

キャッシュ機能を使用すると、Ruleサービス内のキャッシュを活用できます。 キャッシュ機能には、セッションベースと非セッションベースの2種類があります。 cachesessionセッションベースのキャッシュ関数は を使用するのに対し、非セッションベースのキャッシュ関数は を使用します。 セッションベースのキャッシュ関数を使用してキャッシュに保存された値は、ユーザーセッションに関連付けられています。

キャッシュ全体(セッションおよび非セッション)には、最大サイズ制限があります。 この制限は、テナントの設定によって異なる場合があります。 キャッシュが満杯になると、キャッシュへのエントリ追加リクエストはすべてエラーとなります。

キャッシュ関数の結果は、以下の形式になります -
{
  "isSuccessful": true/false, //indicates if the operation was successful or not
  "value": "<string>", // the value obtained from the operation
  "errorID": "<string>", // the error ID if any
  "errorMessage": "<string>", // the error message if any
}
表9. セッションベースのキャッシュ機能
構文 説明
session.Set($key, $value $ttlSec) ユーザーセッションに関連付けられた値をキャッシュに保存します。

この関数は3つの引数を受け取ります:

  • $key: キャッシュで使用されるキー。 これは式であり、常に文字列として評価される必要があります。 このキーの最大長は16文字です。
  • $value: 保存する値。 これは式であり、常に文字列として評価される必要があります。 この値の最大長は1000000文字です。
  • $ttlSec: その値の生存時間。 最大値は28800です。
session.Set("computedID", "user1@web.com", "1200")
結果:

{"result":{"isSuccessful":true}}
session.Get($key) $key キャッシュ内のユーザーセッションに関連付けられた値を取得します。
session.Get("computedID")
結果:

{"result":{"isSuccessful":true, "value": "user1@web.com"}}
session.Delete($key) $key キャッシュから、ユーザーセッションに関連付けられた値を削除します。
session.Delete("computedID")
結果:

{"result":{"isSuccessful":true}}
session.Exists($key) ユーザーセッションに関連付けられたデータ $key がキャッシュ内に存在するかどうかを確認します。
session.Exists("computedID")
結果:

{"result":{"isSuccessful":true, "value":"true"}}
session.GetAndDelete($key) キャッシュ内の指定 $key されたユーザーセッションに関連付けられた値を取得し、キャッシュから削除します。
session.GetAndDelete("computedID")
結果:

{"result":{"isSuccessful":true, "value": "user1@web.com"}}
表10. セッションに依存しないキャッシュ機能
構文 説明
cache.Set($key, $value $ttlSec) 値をキャッシュに保存します。
この関数は3つの引数を受け取ります:
  • $key: キャッシュで使用されるキー。 これは式であり、常に文字列として評価される必要があります。 このキーの最大長は16文字です。
  • $value: 保存する値。 これは式であり、常に文字列として評価される必要があります。 この値の最大長は1000000文字です。
  • $ttlSec: その値の生存時間。 最大値は604800です。
cache.Set("companyName", "DunderMifflin", "1200")

結果:

{"result":{"isSuccessful":true}}
cache.Get($key) $key キャッシュ内の値を取得します。
cache.Get("companyName")
結果:

{"result":{"isSuccessful":true, "value": "DunderMifflin"}}
cache.Delete($key) キャッシュから を含む値を $key 削除します。
cache.Delete("companyName")
結果:

{"result":{"isSuccessful":true}}
cache.Exists($key) キャッシュにそのデータ $key が存在するかどうかを確認します。
cache.Exists("companyName")
結果:

{"result":{"isSuccessful":true, "value":"true"}}
cache.GetAndDelete($key) キャッシュ内の指定された $key 値を取得し、キャッシュから削除します。
cache.GetAndDelete("companyName")
結果:

{"result":{"isSuccessful":true, "value": "DunderMifflin"}}
表11. よくあるエラー状況
エラー 結果
キーの長さが制限を超えています
{"error":{"messageId":"CSIBU2000E","messageDescription":"The length of the
              key provided exceeds the character limit of [16]."}}}
値の長さが制限を超えています
{"error":{"messageId":"CSIBU2000E","messageDescription":The length of the
              value provided for the key [exampleKey] exceeds the character limit of
              [1000000]."}}}
キャッシュからキーを取得しようとした際、キーが見つかりません
{"result":{"errorID":"CSIBU2040E","errorMessage":"Failed to get a value from
              the cache with the key [exampleKey].","isSuccessful":false}}
キャッシュの制限を超えた場合
{"error":{"messageId":"CSIBU2000E","messageDescription":"Cache limit has
              been exceeded."}}

「Secrets」の機能

既存のシークレットにアクセスするには、シークレット関数を使用します。
注: CELx式( VDEV_66277 )内の「Secrets」機能は、ご要望に応じて有効化可能です。 この機能のご利用をご希望の場合は、 IBM の営業担当者、または IBM の担当者に連絡し、本機能の有効化を希望する旨をお伝えください。 サポートチケットを作成する権限をお持ちの場合は、件名に「CELx式内のシークレット」と記入してサポートチケットを作成してください。 IBM Verify 無料トライアル期間中は、サポートチケットを作成することはできません。
構文 説明
secrets.get($group, $name) 指定されたグループ $group と名前で秘密情報を入手する $name secrets.get("apiKeys", "testKey")

結果:

<the testKey secret in the apiKeys group>
secrets.get($name) $name指定された名前の秘密を取得します。 「secret」グループは、デフォルトのグループ「default」となります。 secrets.get("testKey")

結果:

<the testKey secret in the default group>