diff --git a/lib/auth/machineid/workloadidentityv1/expression/proto.go b/lib/auth/machineid/workloadidentityv1/expression/proto.go index 67c5a9f007f61..cda29182f7188 100644 --- a/lib/auth/machineid/workloadidentityv1/expression/proto.go +++ b/lib/auth/machineid/workloadidentityv1/expression/proto.go @@ -146,9 +146,9 @@ func protoMessageVariables[TMessage proto.Message, TEnv messageEnv[TMessage]](ze } }) case protoreflect.Uint32Kind, protoreflect.Uint64Kind: - vars[name] = typical.DynamicVariable(func(env TEnv) (uint64, error) { + vars[name] = typical.DynamicVariable(func(env TEnv) (uint, error) { if v, err := get(env); err == nil { - return v.Uint(), nil + return uint(v.Uint()), nil } else { return 0, err } diff --git a/lib/auth/machineid/workloadidentityv1/expression/template.go b/lib/auth/machineid/workloadidentityv1/expression/template.go index c509d1b7e37d1..857cc46730c7a 100644 --- a/lib/auth/machineid/workloadidentityv1/expression/template.go +++ b/lib/auth/machineid/workloadidentityv1/expression/template.go @@ -135,8 +135,10 @@ func (t *Template) Render(env *Environment) (string, error) { _, _ = b.WriteString(strconv.FormatBool(t)) case int: _, _ = b.WriteString(strconv.Itoa(t)) + case uint: + _, _ = b.WriteString(strconv.Itoa(int(t))) default: - return "", trace.Errorf("expression did not evaluate to a string: %s", frag.text) + return "", trace.Errorf("expression did not evaluate to a string: %q, %T", frag.text, result) } } } diff --git a/lib/auth/machineid/workloadidentityv1/expression/template_test.go b/lib/auth/machineid/workloadidentityv1/expression/template_test.go index 67cff3d8d3b13..74063c8ca01b8 100644 --- a/lib/auth/machineid/workloadidentityv1/expression/template_test.go +++ b/lib/auth/machineid/workloadidentityv1/expression/template_test.go @@ -98,6 +98,28 @@ func TestTemplate_Success(t *testing.T) { attrs: &workloadidentityv1.Attrs{}, output: "1234", }, + "int interpolation": { + tmpl: `{{ workload.unix.pid }}`, + attrs: &workloadidentityv1.Attrs{ + Workload: &workloadidentityv1.WorkloadAttrs{ + Unix: &workloadidentityv1.WorkloadAttrsUnix{ + Pid: 1337, + }, + }, + }, + output: "1337", + }, + "uint interpolation": { + tmpl: `{{ workload.unix.uid }}`, + attrs: &workloadidentityv1.Attrs{ + Workload: &workloadidentityv1.WorkloadAttrs{ + Unix: &workloadidentityv1.WorkloadAttrsUnix{ + Uid: 1337, + }, + }, + }, + output: "1337", + }, "user traits": { tmpl: `{{user.traits.skill}}`, attrs: &workloadidentityv1.Attrs{