@eudiplo/cli 9.1.0-main.ec92b92 → 9.1.0-main.f80d85e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/config/portability/migrations.spec.js +2 -1
- package/dist/commands/config/portability/migrations.spec.js.map +1 -1
- package/dist/commands/config/portability/upgrade.d.ts.map +1 -1
- package/dist/commands/config/portability/upgrade.js +2 -7
- package/dist/commands/config/portability/upgrade.js.map +1 -1
- package/dist/commands/config/validate/registry.json +11 -0
- package/dist/index.js +17151 -7758
- package/package.json +4 -4
- package/templates/demo-config/key-chains/status-list.json +3 -3
- package/templates/schemas/CredentialConfigCreate.schema.json +236 -6
- package/templates/schemas/CredentialConfigFile.schema.json +797 -1
- package/templates/schemas/ImportTenantDto.schema.json +0 -5
- package/templates/schemas/IssuanceConfig.schema.json +3 -8
- package/templates/schemas/IssuanceConfigFile.schema.json +814 -1
- package/templates/schemas/KeyChainConfigFile.schema.json +371 -1
- package/templates/schemas/KeyChainCreateDto.schema.json +1 -0
- package/templates/schemas/KeyChainDefaultsConfigFile.schema.json +123 -0
- package/templates/schemas/KeyChainImportDto.schema.json +1 -0
- package/templates/schemas/TenantConfigFile.schema.json +266 -7
- package/templates/schemas/UpdateTenantDto.schema.json +0 -12
- package/templates/schemas.manifest.json +1 -0
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"properties": {
|
|
10
10
|
"$schema": {
|
|
11
11
|
"type": "string",
|
|
12
|
-
"const": "https://eudiplo.dev/schemas/
|
|
12
|
+
"const": "https://eudiplo.dev/schemas/v4/KeyChainConfigFile.schema.json"
|
|
13
13
|
},
|
|
14
14
|
"metadata": {
|
|
15
15
|
"type": "object",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"type": "string",
|
|
43
43
|
"enum": [
|
|
44
44
|
"access",
|
|
45
|
+
"accessToken",
|
|
45
46
|
"attestation",
|
|
46
47
|
"trustList",
|
|
47
48
|
"statusList",
|
|
@@ -1095,6 +1096,374 @@
|
|
|
1095
1096
|
],
|
|
1096
1097
|
"additionalProperties": false
|
|
1097
1098
|
},
|
|
1099
|
+
{
|
|
1100
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1101
|
+
"$id": "https://eudiplo.dev/schemas/v3/KeyChainConfigFile.schema.json",
|
|
1102
|
+
"title": "KeyChainConfigFile",
|
|
1103
|
+
"type": "object",
|
|
1104
|
+
"properties": {
|
|
1105
|
+
"$schema": {
|
|
1106
|
+
"type": "string",
|
|
1107
|
+
"const": "https://eudiplo.dev/schemas/v3/KeyChainConfigFile.schema.json"
|
|
1108
|
+
},
|
|
1109
|
+
"metadata": {
|
|
1110
|
+
"type": "object",
|
|
1111
|
+
"properties": {
|
|
1112
|
+
"generation": {
|
|
1113
|
+
"type": "integer",
|
|
1114
|
+
"minimum": 1,
|
|
1115
|
+
"maximum": 9007199254740991
|
|
1116
|
+
},
|
|
1117
|
+
"ownership": {
|
|
1118
|
+
"type": "string",
|
|
1119
|
+
"enum": [
|
|
1120
|
+
"unmanaged",
|
|
1121
|
+
"file-managed"
|
|
1122
|
+
]
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
"additionalProperties": false
|
|
1126
|
+
},
|
|
1127
|
+
"spec": {
|
|
1128
|
+
"type": "object",
|
|
1129
|
+
"properties": {
|
|
1130
|
+
"id": {
|
|
1131
|
+
"type": "string"
|
|
1132
|
+
},
|
|
1133
|
+
"description": {
|
|
1134
|
+
"type": "string"
|
|
1135
|
+
},
|
|
1136
|
+
"usageType": {
|
|
1137
|
+
"type": "string",
|
|
1138
|
+
"enum": [
|
|
1139
|
+
"access",
|
|
1140
|
+
"attestation",
|
|
1141
|
+
"trustList",
|
|
1142
|
+
"statusList",
|
|
1143
|
+
"federation",
|
|
1144
|
+
"encrypt"
|
|
1145
|
+
]
|
|
1146
|
+
},
|
|
1147
|
+
"type": {
|
|
1148
|
+
"description": "Key chain type. For a `private-jwk` key source without `activeJwk`, `standalone` makes `jwk` the signing key and `crt` its chain, leaf first; `internalChain` makes `jwk` a CA key and the last `crt` entry its CA certificate (created if `crt` is omitted), and the import generates a new signing key with a certificate issued by it. Without `type`, `jwk` is a CA key only if `rotationPolicy.enabled` is true and `crt` is not a single self-signed certificate that is not a CA. For `regenerate`, it is the type of the new key chain and must equal `keySource.keyChainType` if both are set. For the other key sources, it must match the key chain they describe.",
|
|
1149
|
+
"type": "string",
|
|
1150
|
+
"enum": [
|
|
1151
|
+
"standalone",
|
|
1152
|
+
"internalChain"
|
|
1153
|
+
]
|
|
1154
|
+
},
|
|
1155
|
+
"keySource": {
|
|
1156
|
+
"oneOf": [
|
|
1157
|
+
{
|
|
1158
|
+
"type": "object",
|
|
1159
|
+
"properties": {
|
|
1160
|
+
"type": {
|
|
1161
|
+
"type": "string",
|
|
1162
|
+
"const": "private-jwk"
|
|
1163
|
+
},
|
|
1164
|
+
"jwk": {
|
|
1165
|
+
"type": "object",
|
|
1166
|
+
"properties": {
|
|
1167
|
+
"kty": {
|
|
1168
|
+
"type": "string",
|
|
1169
|
+
"description": "Key type (for example EC)."
|
|
1170
|
+
},
|
|
1171
|
+
"x": {
|
|
1172
|
+
"type": "string",
|
|
1173
|
+
"description": "Elliptic curve public x coordinate."
|
|
1174
|
+
},
|
|
1175
|
+
"y": {
|
|
1176
|
+
"type": "string",
|
|
1177
|
+
"description": "Elliptic curve public y coordinate."
|
|
1178
|
+
},
|
|
1179
|
+
"crv": {
|
|
1180
|
+
"type": "string",
|
|
1181
|
+
"description": "Elliptic curve name."
|
|
1182
|
+
},
|
|
1183
|
+
"d": {
|
|
1184
|
+
"type": "string",
|
|
1185
|
+
"description": "Private key value."
|
|
1186
|
+
},
|
|
1187
|
+
"alg": {
|
|
1188
|
+
"description": "Optional algorithm hint.",
|
|
1189
|
+
"type": "string"
|
|
1190
|
+
},
|
|
1191
|
+
"kid": {
|
|
1192
|
+
"description": "Optional key identifier.",
|
|
1193
|
+
"type": "string"
|
|
1194
|
+
}
|
|
1195
|
+
},
|
|
1196
|
+
"required": [
|
|
1197
|
+
"kty",
|
|
1198
|
+
"x",
|
|
1199
|
+
"y",
|
|
1200
|
+
"crv",
|
|
1201
|
+
"d"
|
|
1202
|
+
],
|
|
1203
|
+
"additionalProperties": false
|
|
1204
|
+
},
|
|
1205
|
+
"activeJwk": {
|
|
1206
|
+
"type": "object",
|
|
1207
|
+
"properties": {
|
|
1208
|
+
"kty": {
|
|
1209
|
+
"type": "string",
|
|
1210
|
+
"description": "Key type (for example EC)."
|
|
1211
|
+
},
|
|
1212
|
+
"x": {
|
|
1213
|
+
"type": "string",
|
|
1214
|
+
"description": "Elliptic curve public x coordinate."
|
|
1215
|
+
},
|
|
1216
|
+
"y": {
|
|
1217
|
+
"type": "string",
|
|
1218
|
+
"description": "Elliptic curve public y coordinate."
|
|
1219
|
+
},
|
|
1220
|
+
"crv": {
|
|
1221
|
+
"type": "string",
|
|
1222
|
+
"description": "Elliptic curve name."
|
|
1223
|
+
},
|
|
1224
|
+
"d": {
|
|
1225
|
+
"type": "string",
|
|
1226
|
+
"description": "Private key value."
|
|
1227
|
+
},
|
|
1228
|
+
"alg": {
|
|
1229
|
+
"description": "Optional algorithm hint.",
|
|
1230
|
+
"type": "string"
|
|
1231
|
+
},
|
|
1232
|
+
"kid": {
|
|
1233
|
+
"description": "Optional key identifier.",
|
|
1234
|
+
"type": "string"
|
|
1235
|
+
}
|
|
1236
|
+
},
|
|
1237
|
+
"required": [
|
|
1238
|
+
"kty",
|
|
1239
|
+
"x",
|
|
1240
|
+
"y",
|
|
1241
|
+
"crv",
|
|
1242
|
+
"d"
|
|
1243
|
+
],
|
|
1244
|
+
"additionalProperties": false
|
|
1245
|
+
}
|
|
1246
|
+
},
|
|
1247
|
+
"required": [
|
|
1248
|
+
"type",
|
|
1249
|
+
"jwk"
|
|
1250
|
+
],
|
|
1251
|
+
"additionalProperties": false
|
|
1252
|
+
},
|
|
1253
|
+
{
|
|
1254
|
+
"type": "object",
|
|
1255
|
+
"properties": {
|
|
1256
|
+
"type": {
|
|
1257
|
+
"type": "string",
|
|
1258
|
+
"const": "external-reference"
|
|
1259
|
+
},
|
|
1260
|
+
"provider": {
|
|
1261
|
+
"type": "string"
|
|
1262
|
+
},
|
|
1263
|
+
"externalKeyId": {
|
|
1264
|
+
"type": "string"
|
|
1265
|
+
},
|
|
1266
|
+
"publicJwk": {
|
|
1267
|
+
"type": "object",
|
|
1268
|
+
"properties": {
|
|
1269
|
+
"kty": {
|
|
1270
|
+
"type": "string"
|
|
1271
|
+
},
|
|
1272
|
+
"x": {
|
|
1273
|
+
"type": "string"
|
|
1274
|
+
},
|
|
1275
|
+
"y": {
|
|
1276
|
+
"type": "string"
|
|
1277
|
+
},
|
|
1278
|
+
"crv": {
|
|
1279
|
+
"type": "string"
|
|
1280
|
+
},
|
|
1281
|
+
"alg": {
|
|
1282
|
+
"type": "string"
|
|
1283
|
+
},
|
|
1284
|
+
"kid": {
|
|
1285
|
+
"type": "string"
|
|
1286
|
+
}
|
|
1287
|
+
},
|
|
1288
|
+
"required": [
|
|
1289
|
+
"kty",
|
|
1290
|
+
"x",
|
|
1291
|
+
"y",
|
|
1292
|
+
"crv"
|
|
1293
|
+
],
|
|
1294
|
+
"additionalProperties": false
|
|
1295
|
+
},
|
|
1296
|
+
"activeExternalKeyId": {
|
|
1297
|
+
"type": "string"
|
|
1298
|
+
},
|
|
1299
|
+
"activePublicJwk": {
|
|
1300
|
+
"type": "object",
|
|
1301
|
+
"properties": {
|
|
1302
|
+
"kty": {
|
|
1303
|
+
"type": "string"
|
|
1304
|
+
},
|
|
1305
|
+
"x": {
|
|
1306
|
+
"type": "string"
|
|
1307
|
+
},
|
|
1308
|
+
"y": {
|
|
1309
|
+
"type": "string"
|
|
1310
|
+
},
|
|
1311
|
+
"crv": {
|
|
1312
|
+
"type": "string"
|
|
1313
|
+
},
|
|
1314
|
+
"alg": {
|
|
1315
|
+
"type": "string"
|
|
1316
|
+
},
|
|
1317
|
+
"kid": {
|
|
1318
|
+
"type": "string"
|
|
1319
|
+
}
|
|
1320
|
+
},
|
|
1321
|
+
"required": [
|
|
1322
|
+
"kty",
|
|
1323
|
+
"x",
|
|
1324
|
+
"y",
|
|
1325
|
+
"crv"
|
|
1326
|
+
],
|
|
1327
|
+
"additionalProperties": false
|
|
1328
|
+
}
|
|
1329
|
+
},
|
|
1330
|
+
"required": [
|
|
1331
|
+
"type",
|
|
1332
|
+
"provider",
|
|
1333
|
+
"externalKeyId",
|
|
1334
|
+
"publicJwk"
|
|
1335
|
+
],
|
|
1336
|
+
"additionalProperties": false
|
|
1337
|
+
},
|
|
1338
|
+
{
|
|
1339
|
+
"type": "object",
|
|
1340
|
+
"properties": {
|
|
1341
|
+
"type": {
|
|
1342
|
+
"type": "string",
|
|
1343
|
+
"const": "required"
|
|
1344
|
+
},
|
|
1345
|
+
"publicJwk": {
|
|
1346
|
+
"type": "object",
|
|
1347
|
+
"properties": {
|
|
1348
|
+
"kty": {
|
|
1349
|
+
"type": "string"
|
|
1350
|
+
},
|
|
1351
|
+
"x": {
|
|
1352
|
+
"type": "string"
|
|
1353
|
+
},
|
|
1354
|
+
"y": {
|
|
1355
|
+
"type": "string"
|
|
1356
|
+
},
|
|
1357
|
+
"crv": {
|
|
1358
|
+
"type": "string"
|
|
1359
|
+
},
|
|
1360
|
+
"alg": {
|
|
1361
|
+
"type": "string"
|
|
1362
|
+
},
|
|
1363
|
+
"kid": {
|
|
1364
|
+
"type": "string"
|
|
1365
|
+
}
|
|
1366
|
+
},
|
|
1367
|
+
"required": [
|
|
1368
|
+
"kty",
|
|
1369
|
+
"x",
|
|
1370
|
+
"y",
|
|
1371
|
+
"crv"
|
|
1372
|
+
],
|
|
1373
|
+
"additionalProperties": false
|
|
1374
|
+
}
|
|
1375
|
+
},
|
|
1376
|
+
"required": [
|
|
1377
|
+
"type"
|
|
1378
|
+
],
|
|
1379
|
+
"additionalProperties": false
|
|
1380
|
+
},
|
|
1381
|
+
{
|
|
1382
|
+
"type": "object",
|
|
1383
|
+
"properties": {
|
|
1384
|
+
"type": {
|
|
1385
|
+
"type": "string",
|
|
1386
|
+
"const": "regenerate"
|
|
1387
|
+
},
|
|
1388
|
+
"keyChainType": {
|
|
1389
|
+
"type": "string",
|
|
1390
|
+
"enum": [
|
|
1391
|
+
"standalone",
|
|
1392
|
+
"internalChain"
|
|
1393
|
+
]
|
|
1394
|
+
}
|
|
1395
|
+
},
|
|
1396
|
+
"required": [
|
|
1397
|
+
"type"
|
|
1398
|
+
],
|
|
1399
|
+
"additionalProperties": false
|
|
1400
|
+
}
|
|
1401
|
+
]
|
|
1402
|
+
},
|
|
1403
|
+
"crt": {
|
|
1404
|
+
"type": "array",
|
|
1405
|
+
"items": {
|
|
1406
|
+
"type": "string"
|
|
1407
|
+
}
|
|
1408
|
+
},
|
|
1409
|
+
"activeCertificate": {
|
|
1410
|
+
"description": "Active certificate for an internal key chain.",
|
|
1411
|
+
"type": "string"
|
|
1412
|
+
},
|
|
1413
|
+
"kmsProvider": {
|
|
1414
|
+
"type": "string"
|
|
1415
|
+
},
|
|
1416
|
+
"rotationPolicy": {
|
|
1417
|
+
"type": "object",
|
|
1418
|
+
"properties": {
|
|
1419
|
+
"enabled": {
|
|
1420
|
+
"type": "boolean"
|
|
1421
|
+
},
|
|
1422
|
+
"intervalDays": {
|
|
1423
|
+
"anyOf": [
|
|
1424
|
+
{
|
|
1425
|
+
"type": "number",
|
|
1426
|
+
"minimum": 1,
|
|
1427
|
+
"maximum": 3650
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
"type": "null"
|
|
1431
|
+
}
|
|
1432
|
+
]
|
|
1433
|
+
},
|
|
1434
|
+
"certValidityDays": {
|
|
1435
|
+
"anyOf": [
|
|
1436
|
+
{
|
|
1437
|
+
"type": "number",
|
|
1438
|
+
"minimum": 1,
|
|
1439
|
+
"maximum": 3650
|
|
1440
|
+
},
|
|
1441
|
+
{
|
|
1442
|
+
"type": "null"
|
|
1443
|
+
}
|
|
1444
|
+
]
|
|
1445
|
+
}
|
|
1446
|
+
},
|
|
1447
|
+
"required": [
|
|
1448
|
+
"enabled"
|
|
1449
|
+
],
|
|
1450
|
+
"additionalProperties": false
|
|
1451
|
+
}
|
|
1452
|
+
},
|
|
1453
|
+
"required": [
|
|
1454
|
+
"usageType",
|
|
1455
|
+
"keySource"
|
|
1456
|
+
],
|
|
1457
|
+
"additionalProperties": false
|
|
1458
|
+
}
|
|
1459
|
+
},
|
|
1460
|
+
"required": [
|
|
1461
|
+
"$schema",
|
|
1462
|
+
"metadata",
|
|
1463
|
+
"spec"
|
|
1464
|
+
],
|
|
1465
|
+
"additionalProperties": false
|
|
1466
|
+
},
|
|
1098
1467
|
{
|
|
1099
1468
|
"type": "object",
|
|
1100
1469
|
"properties": {
|
|
@@ -1157,6 +1526,7 @@
|
|
|
1157
1526
|
"type": "string",
|
|
1158
1527
|
"enum": [
|
|
1159
1528
|
"access",
|
|
1529
|
+
"accessToken",
|
|
1160
1530
|
"attestation",
|
|
1161
1531
|
"trustList",
|
|
1162
1532
|
"statusList",
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "./KeyChainDefaultsConfigFile.schema.json",
|
|
4
|
+
"title": "KeyChainDefaultsConfigFile",
|
|
5
|
+
"description": "Configuration file identified by its $schema URL.",
|
|
6
|
+
"oneOf": [
|
|
7
|
+
{
|
|
8
|
+
"type": "object",
|
|
9
|
+
"properties": {
|
|
10
|
+
"$schema": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"const": "https://eudiplo.dev/schemas/v2/KeyChainDefaultsConfigFile.schema.json"
|
|
13
|
+
},
|
|
14
|
+
"metadata": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"generation": {
|
|
18
|
+
"type": "integer",
|
|
19
|
+
"minimum": 1,
|
|
20
|
+
"maximum": 9007199254740991
|
|
21
|
+
},
|
|
22
|
+
"ownership": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": [
|
|
25
|
+
"unmanaged",
|
|
26
|
+
"file-managed"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"additionalProperties": false
|
|
31
|
+
},
|
|
32
|
+
"spec": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"properties": {
|
|
35
|
+
"access": {
|
|
36
|
+
"description": "ID of the access key chain used where no configuration names one: presentation requests of configurations without accessKeyChainId and the signed issuer metadata. Without it, EUDIPLO picks one of the tenant's access key chains by rule.",
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1
|
|
39
|
+
},
|
|
40
|
+
"accessToken": {
|
|
41
|
+
"description": "ID of the access token key chain (usage type accessToken) that signs the access tokens of authorization servers without token.signingKeyId and is published in their JWKS. Without it, EUDIPLO uses the tenant's oldest access token key chain and creates one with ID access-token when the tenant has none.",
|
|
42
|
+
"type": "string",
|
|
43
|
+
"minLength": 1
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"additionalProperties": false,
|
|
47
|
+
"description": "The tenant's key chain per usage type, used where no configuration names one. A usage type without an entry uses a key chain picked by rule."
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"required": [
|
|
51
|
+
"$schema",
|
|
52
|
+
"metadata",
|
|
53
|
+
"spec"
|
|
54
|
+
],
|
|
55
|
+
"additionalProperties": false
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
59
|
+
"$id": "https://eudiplo.dev/schemas/v1/KeyChainDefaultsConfigFile.schema.json",
|
|
60
|
+
"title": "KeyChainDefaultsConfigFile",
|
|
61
|
+
"type": "object",
|
|
62
|
+
"properties": {
|
|
63
|
+
"$schema": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"const": "https://eudiplo.dev/schemas/v1/KeyChainDefaultsConfigFile.schema.json"
|
|
66
|
+
},
|
|
67
|
+
"metadata": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"properties": {
|
|
70
|
+
"generation": {
|
|
71
|
+
"type": "integer",
|
|
72
|
+
"minimum": 1,
|
|
73
|
+
"maximum": 9007199254740991
|
|
74
|
+
},
|
|
75
|
+
"ownership": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"enum": [
|
|
78
|
+
"unmanaged",
|
|
79
|
+
"file-managed"
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"additionalProperties": false
|
|
84
|
+
},
|
|
85
|
+
"spec": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"properties": {
|
|
88
|
+
"access": {
|
|
89
|
+
"description": "ID of the access key chain used where no configuration names one: presentation requests of configurations without accessKeyChainId and the signed issuer metadata. Without it, EUDIPLO picks one of the tenant's access key chains by rule.",
|
|
90
|
+
"type": "string",
|
|
91
|
+
"minLength": 1
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"additionalProperties": false,
|
|
95
|
+
"description": "The tenant's key chain per usage type, used where no configuration names one. A usage type without an entry uses a key chain picked by rule."
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"required": [
|
|
99
|
+
"$schema",
|
|
100
|
+
"metadata",
|
|
101
|
+
"spec"
|
|
102
|
+
],
|
|
103
|
+
"additionalProperties": false
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"type": "object",
|
|
107
|
+
"properties": {
|
|
108
|
+
"access": {
|
|
109
|
+
"description": "ID of the access key chain used where no configuration names one: presentation requests of configurations without accessKeyChainId and the signed issuer metadata. Without it, EUDIPLO picks one of the tenant's access key chains by rule.",
|
|
110
|
+
"type": "string",
|
|
111
|
+
"minLength": 1
|
|
112
|
+
},
|
|
113
|
+
"accessToken": {
|
|
114
|
+
"description": "ID of the access token key chain (usage type accessToken) that signs the access tokens of authorization servers without token.signingKeyId and is published in their JWKS. Without it, EUDIPLO uses the tenant's oldest access token key chain and creates one with ID access-token when the tenant has none.",
|
|
115
|
+
"type": "string",
|
|
116
|
+
"minLength": 1
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"additionalProperties": false,
|
|
120
|
+
"description": "The tenant's key chain per usage type, used where no configuration names one. A usage type without an entry uses a key chain picked by rule."
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|