Skip to content

Commit 327cb0b

Browse files
authored
Added x509/JWT svid field to frontend Create entry page #236 (#294)
2 parents debd4be + 4352e88 commit 327cb0b

File tree

4 files changed

+92
-38
lines changed

4 files changed

+92
-38
lines changed

docs/quickstart/tornjak-configmap.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ data:
1313
1414
# configure HTTP connection to Tornjak server
1515
http {
16-
port = 10080 # opens at port 10080
16+
port = 10000 # opens at port 10080
1717
}
1818
1919
}

tornjak-frontend/src/components/entry-create-json.tsx

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ type CreateEntryJsonState = {
5252
parentIdPath: string,
5353
parentId: string,
5454
selectorsList: string,
55-
ttl: number,
55+
jwt_svid_ttl: number,
56+
x509_svid_ttl: number,
5657
expiresAt: number,
5758
federatesWith: string,
5859
dnsNames: string,
@@ -80,7 +81,8 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
8081
this.handleChange = this.handleChange.bind(this);
8182
this.setSelectedEntriesIds = this.setSelectedEntriesIds.bind(this);
8283
this.onChangeSelectors = this.onChangeSelectors.bind(this);
83-
this.onChangeTtl = this.onChangeTtl.bind(this);
84+
this.onChangex509Ttl = this.onChangex509Ttl.bind(this);
85+
this.onChangeJwtTtl = this.onChangeJwtTtl.bind(this);
8486
this.onChangeExpiresAt = this.onChangeExpiresAt.bind(this);
8587
this.onChangeFederatesWith = this.onChangeFederatesWith.bind(this);
8688
this.onChangeDnsNames = this.onChangeDnsNames.bind(this);
@@ -102,7 +104,8 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
102104
spiffe_id: { trust_domain: "", path: "" },
103105
parent_id: { trust_domain: "", path: "" },
104106
selectors: [],
105-
ttl: 0,
107+
jwt_svid_ttl: 0,
108+
x509_svid_ttl: 0,
106109
federates_with: [],
107110
admin: false,
108111
downstream: false,
@@ -121,7 +124,8 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
121124
parentIdPath: "",
122125
parentId: "",
123126
selectorsList: "",
124-
ttl: 0,
127+
x509_svid_ttl: 0,
128+
jwt_svid_ttl: 0,
125129
expiresAt: 0,
126130
federatesWith: "",
127131
dnsNames: "",
@@ -258,7 +262,8 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
258262
parentIdTrustDomain: parentId_trustDomain,
259263
parentIdPath: parentId_path,
260264
selectorsList: selectorsWithNewline,
261-
ttl: localNewEntry.ttl,
265+
x509_svid_ttl: localNewEntry.x509_svid_ttl,
266+
jwt_svid_ttl: localNewEntry.jwt_svid_ttl,
262267
expiresAt: localNewEntry.expires_at,
263268
federatesWith: federates_with,
264269
dnsNames: dns_names,
@@ -333,13 +338,16 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
333338
entriesToUpload[selectedEntryId]["parent_id"]["trust_domain"] = this.state.parentIdTrustDomain;
334339
entriesToUpload[selectedEntryId]["parent_id"]["path"] = this.state.parentIdPath;
335340
entriesToUpload[selectedEntryId]["selectors"] = selectorEntries;
336-
if (this.state.ttl !== undefined) {
337-
entriesToUpload[selectedEntryId]["ttl"] = this.state.ttl;
341+
if (this.state.jwt_svid_ttl !== undefined) {
342+
entriesToUpload[selectedEntryId]["jwt_svid_ttl"] = this.state.jwt_svid_ttl;
338343
}
339-
if (this.state.ttl !== undefined) {
340-
entriesToUpload[selectedEntryId]["expires_at"] = this.state.expiresAt;
344+
if (this.state.x509_svid_ttl !== undefined) {
345+
entriesToUpload[selectedEntryId]["x509_svid_ttl"] = this.state.x509_svid_ttl;
341346
}
342347
if (this.state.expiresAt !== undefined) {
348+
entriesToUpload[selectedEntryId]["expires_at"] = this.state.expiresAt;
349+
}
350+
if (federatedWithList !== undefined) {
343351
entriesToUpload[selectedEntryId]["federates_with"] = federatedWithList;
344352
}
345353
if (this.state.dnsNames.length !== 0) {
@@ -361,7 +369,8 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
361369
parentId: "",
362370
spiffeId: "",
363371
selectorsList: "",
364-
ttl: 0,
372+
x509_svid_ttl: 0,
373+
jwt_svid_ttl: 0,
365374
expiresAt: 0,
366375
federatesWith: "",
367376
dnsNames: "",
@@ -412,9 +421,16 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
412421
}
413422

414423
// TODO(mamy-CS): e - any for now will be explicitly typed
415-
onChangeTtl(e: any): void {
424+
onChangeJwtTtl(e: any): void {
416425
this.setState({
417-
ttl: Number(e.target.value)
426+
jwt_svid_ttl: Number(e.target.value)
427+
});
428+
}
429+
430+
// TODO(mamy-CS): e - any for now will be explicitly typed
431+
onChangex509Ttl(e: any): void {
432+
this.setState({
433+
x509_svid_ttl: Number(e.target.value)
418434
});
419435
}
420436

@@ -463,7 +479,8 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
463479
parentId: "",
464480
spiffeId: "",
465481
selectorsList: "",
466-
ttl: 0,
482+
x509_svid_ttl: 0,
483+
jwt_svid_ttl: 0,
467484
expiresAt: 0,
468485
federatesWith: "",
469486
dnsNames: "",
@@ -792,15 +809,28 @@ class CreateEntryJson extends Component<CreateEntryJsonProp, CreateEntryJsonStat
792809
<legend className="bx--label">Advanced</legend>
793810
<div className="ttl-input" data-test="ttl-input">
794811
<NumberInput
795-
helperText="Ttl for identities issued for this entry (In seconds)"
812+
helperText="x509 SVID Ttl for identities issued for this entry (In seconds) Overrides JWT TTL if set"
813+
id="ttl-input"
814+
invalidText="Number is not valid"
815+
label="x509 Time to Leave (Ttl)"
816+
//max={100}
817+
min={0}
818+
step={1}
819+
value={this.state.x509_svid_ttl}
820+
onChange={this.onChangex509Ttl}
821+
/>
822+
</div>
823+
<div className="ttl-input" data-test="ttl-input">
824+
<NumberInput
825+
helperText="JWT SVID ttl for identities issued for this entry (In seconds) "
796826
id="ttl-input"
797827
invalidText="Number is not valid"
798-
label="Time to Leave (Ttl)"
828+
label="JWT Time to Leave (Ttl)"
799829
//max={100}
800830
min={0}
801831
step={1}
802-
value={this.state.ttl}
803-
onChange={this.onChangeTtl}
832+
value={this.state.jwt_svid_ttl}
833+
onChange={this.onChangeJwtTtl}
804834
/>
805835
</div>
806836
<div className="expiresAt-input" data-test="expiresAt-input">

tornjak-frontend/src/components/entry-create.tsx

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ type CreateEntryState = {
105105
selectors: string,
106106
selectorsRecommendationList: string,
107107
adminFlag: boolean,
108-
ttl: number,
108+
jwt_svid_ttl: number,
109+
x509_svid_ttl: number,
109110
expiresAt: number,
110111
dnsNames: string,
111112
federatesWith: string,
@@ -139,7 +140,8 @@ class CreateEntry extends Component<CreateEntryProp, CreateEntryState> {
139140
this.prepareParentIdAgentsList = this.prepareParentIdAgentsList.bind(this);
140141
this.prepareSelectorsList = this.prepareSelectorsList.bind(this);
141142
this.onChangeSelectorsRecommended = this.onChangeSelectorsRecommended.bind(this);
142-
this.onChangeTtl = this.onChangeTtl.bind(this);
143+
this.onChangeJwtTtl = this.onChangeJwtTtl.bind(this);
144+
this.onChangex509Ttl = this.onChangex509Ttl.bind(this);
143145
this.onChangeExpiresAt = this.onChangeExpiresAt.bind(this);
144146
this.onChangeFederatesWith = this.onChangeFederatesWith.bind(this);
145147
this.onChangeDownStream = this.onChangeDownStream.bind(this);
@@ -161,7 +163,8 @@ class CreateEntry extends Component<CreateEntryProp, CreateEntryState> {
161163
selectors: "",
162164
selectorsRecommendationList: "",
163165
adminFlag: false,
164-
ttl: 0,
166+
x509_svid_ttl: 0,
167+
jwt_svid_ttl: 0,
165168
expiresAt: 0,
166169
dnsNames: "",
167170
federatesWith: "",
@@ -363,9 +366,15 @@ class CreateEntry extends Component<CreateEntryProp, CreateEntryState> {
363366
}
364367

365368
// TODO(mamy-CS): e - any for now will be explicitly typed on currently open entry create PR
366-
onChangeTtl(e: any): void {
369+
onChangex509Ttl(e: any): void {
367370
this.setState({
368-
ttl: Number(e.target.value)
371+
x509_svid_ttl: Number(e.target.value)
372+
});
373+
}
374+
375+
onChangeJwtTtl(e: any): void {
376+
this.setState({
377+
jwt_svid_ttl: Number(e.target.value)
369378
});
370379
}
371380

@@ -640,7 +649,8 @@ class CreateEntry extends Component<CreateEntryProp, CreateEntryState> {
640649
},
641650
selectors: selectorEntries,
642651
admin: this.state.adminFlag,
643-
ttl: this.state.ttl,
652+
x509_svid_ttl: this.state.x509_svid_ttl,
653+
jwt_svid_ttl: this.state.jwt_svid_ttl,
644654
expires_at: this.props.globalEntryExpiryTime,
645655
downstream: this.state.downstream,
646656
federates_with: federatedWithList,
@@ -864,19 +874,32 @@ class CreateEntry extends Component<CreateEntryProp, CreateEntryState> {
864874
<div className="advanced">
865875
<fieldset className="bx--fieldset">
866876
<legend className="bx--label">Advanced</legend>
867-
<div className="ttl-input" data-test="ttl-input">
868-
<NumberInput
869-
helperText="Ttl for identities issued for this entry (In seconds)"
870-
id="ttl-input"
871-
invalidText="Number is not valid"
872-
label="Time to Leave (Ttl)"
873-
//max={100}
874-
min={0}
875-
step={1}
876-
value={0}
877-
onChange={this.onChangeTtl}
878-
/>
879-
</div>
877+
<div className="ttl-input" data-test="ttl-input">
878+
<NumberInput
879+
helperText="x509 SVID Ttl for identities issued for this entry (In seconds) Overrides JWT TTL if set"
880+
id="ttl-input"
881+
invalidText="Number is not valid"
882+
label="x509 Time to Leave (Ttl)"
883+
//max={100}
884+
min={0}
885+
step={1}
886+
value={this.state.x509_svid_ttl}
887+
onChange={this.onChangex509Ttl}
888+
/>
889+
</div>
890+
<div className="ttl-input" data-test="ttl-input">
891+
<NumberInput
892+
helperText="JWT SVID ttl for identities issued for this entry (In seconds) "
893+
id="ttl-input"
894+
invalidText="Number is not valid"
895+
label="JWT Time to Leave (Ttl)"
896+
//max={100}
897+
min={0}
898+
step={1}
899+
value={this.state.jwt_svid_ttl}
900+
onChange={this.onChangeJwtTtl}
901+
/>
902+
</div>
880903
<div className="expiresAt-input" data-test="expiresAt-input">
881904
<EntryExpiryFeatures />
882905
</div>

tornjak-frontend/src/components/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ export interface EntriesList {
6161
// node attestation. Otherwise, these selectors represent those produced by
6262
// workload attestation.
6363
selectors: Array<Selector>;
64-
ttl: number; // The time to live for identities issued for this entry (in seconds).
64+
jwt_svid_ttl: number; // time to live for JWT SVID in seconds
65+
x509_svid_ttl: number; // time to live for x509-SVID in seconds
6566
federates_with: string[]; // The names of trust domains the identity described by this entry federates with
6667
// Whether or not the identity described by this entry is an administrative
6768
// workload. Administrative workloads are granted additional access to

0 commit comments

Comments
 (0)