Skip to content

Commit 49569b6

Browse files
committed
test/suites: Test that a cert can't be sent for oidc or bearer identity updates.
Signed-off-by: Mark Laing <mark.laing@canonical.com>
1 parent 6ce6a30 commit 49569b6

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

test/suites/auth.sh

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,29 @@ fine_grained: true"
349349
LXD_CONF="${LXD_CONF6}" CERTNAME=unrestricted my_curl -X GET "https://${LXD_ADDR}/1.0/auth/identities/current" | jq --exit-status '.metadata.fine_grained == false'
350350
lxc config trust remove "${lxdconf6_fingerprint_short}"
351351

352+
# Check that it is not possible to send a certificate in the request body to update an OIDC or bearer identity.
353+
LXD_CONF7=$(mktemp -d -p "${TEST_DIR}" XXX)
354+
LXD_CONF="${LXD_CONF7}" gen_cert_and_key "client"
355+
conf7_cert="$(awk '{printf "%s\\n", $0}' "${LXD_CONF7}/client.crt")"
356+
lxc auth identity create devlxd/test-bearer
357+
358+
# As an admin
359+
! lxc query -X PUT /1.0/auth/identities/bearer/test-bearer -d "{\"tls_certificate\":\"${conf7_cert}\",\"name\":\" \",\"identifier\":\"test-user@example.com\"}" || false
360+
[ "$("${_LXC}" query -X PUT /1.0/auth/identities/bearer/test-bearer -d "{\"tls_certificate\":\"${conf7_cert}\",\"name\":\" \",\"identifier\":\"test-user@example.com\"}" 2>&1 >/dev/null)" = 'Error: Cannot update certificate for identities of type "DevLXD token bearer"' ]
361+
! lxc query -X PATCH /1.0/auth/identities/bearer/test-bearer -d "{\"tls_certificate\":\"${conf7_cert}\"}" || false
362+
[ "$("${_LXC}" query -X PATCH /1.0/auth/identities/bearer/test-bearer -d "{\"tls_certificate\":\"${conf7_cert}\"}" 2>&1 >/dev/null)" = 'Error: Cannot update certificate for identities of type "DevLXD token bearer"' ]
363+
! lxc query -X PUT /1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\",\"name\":\" \",\"identifier\":\"test-user@example.com\"}" || false
364+
[ "$("${_LXC}" query -X PUT /1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\",\"name\":\" \",\"identifier\":\"test-user@example.com\"}" 2>&1 >/dev/null)" = 'Error: Cannot update certificate for identities of type "OIDC client"' ]
365+
! lxc query -X PATCH /1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\"}" || false
366+
[ "$("${_LXC}" query -X PATCH /1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\"}" 2>&1 >/dev/null)" = 'Error: Cannot update certificate for identities of type "OIDC client"' ]
367+
368+
# Or the OIDC identity (can't test the bearer identity as they can't authenticate to the main API yet)
369+
! lxc query -X PUT oidc:/1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\",\"name\":\" \",\"identifier\":\"test-user@example.com\"}" || false
370+
[ "$("${_LXC}" query -X PUT oidc:/1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\",\"name\":\" \",\"identifier\":\"test-user@example.com\"}" 2>&1 >/dev/null)" = 'Error: Forbidden' ]
371+
! lxc query -X PATCH oidc:/1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\"}" || false
372+
[ "$("${_LXC}" query -X PATCH oidc:/1.0/auth/identities/oidc/test-user@example.com -d "{\"tls_certificate\":\"${conf7_cert}\"}" 2>&1 >/dev/null)" = 'Error: Forbidden' ]
373+
374+
lxc auth identity delete devlxd/test-bearer
352375
lxc auth identity group add oidc/test-user@example.com test-group
353376

354377
# Cleanup
@@ -360,6 +383,7 @@ fine_grained: true"
360383
rm -r "${LXD_CONF4}"
361384
rm -r "${LXD_CONF5}"
362385
rm -r "${LXD_CONF6}"
386+
rm -r "${LXD_CONF7}"
363387
lxc config set core.remote_token_expiry="" oidc.issuer="" oidc.client.id=""
364388
}
365389

0 commit comments

Comments
 (0)