From 8daa83a594a2e98f39d764422bfbdbc62c9efd44 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 19:20:00 +0200 Subject: Adding upstream version 2:4.20.0+dfsg. Signed-off-by: Daniel Baumann --- testprogs/blackbox/test_kinit_export_keytab.sh | 263 +++++++++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100755 testprogs/blackbox/test_kinit_export_keytab.sh (limited to 'testprogs/blackbox/test_kinit_export_keytab.sh') diff --git a/testprogs/blackbox/test_kinit_export_keytab.sh b/testprogs/blackbox/test_kinit_export_keytab.sh new file mode 100755 index 0000000..e520a1c --- /dev/null +++ b/testprogs/blackbox/test_kinit_export_keytab.sh @@ -0,0 +1,263 @@ +#!/bin/sh +# +# Blackbox tests for an exported keytab with kinit +# +# Copyright (C) 2006-2007 Jelmer Vernooij +# Copyright (C) 2006-2008 Andrew Bartlett +# Copyright (C) Andreas Schneider + +if [ $# -lt 7 ]; then + cat <&1) + status=$? + if [ ${status} -ne 0 ]; then + echo "${output}" | subunit_fail_test "${testname}" + return $status + fi + + NKEYS=$(echo "${output}" | grep -i "${principal}" | \ + grep -c -e "${KEYTAB_GREP}") + if [ "${NKEYS}" -ne "${expected_nkeys}" ]; then + echo "Unexpected number of keys passed ${NKEYS} != ${expected_nkeys}" | \ + subunit_fail_test "${testname}" + return 1 + fi + + subunit_pass_test "${testname}" + return 0 +} + +testit "create local user ${TEST_USER}" \ + "${VALGRIND}" "${PYTHON}" "${samba_newuser}" "${TEST_USER}" "${TEST_PASSWORD}" \ + "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +testit "dump keytab from domain" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ + "${PREFIX}/tmpkeytab-all" \ + "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +test_keytab "read keytab from domain" \ + "${PREFIX}/tmpkeytab-all" "${SERVER}\\\$" "${EXPECTED_NKEYS}" || \ + failed=$((failed + 1)) + +testit "dump keytab from domain (2nd time)" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ + "${PREFIX}/tmpkeytab-all" "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +test_keytab "read keytab from domain (2nd time)" \ + "${PREFIX}/tmpkeytab-all" "${SERVER}\\\$" "${EXPECTED_NKEYS}" || \ + failed=$((failed + 1)) + +testit "dump keytab from domain for cifs service principal" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ + "${PREFIX}/tmpkeytab-server" --principal="cifs/$SERVER_FQDN" \ + "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +test_keytab "read keytab from domain for cifs service principal" \ + "${PREFIX}/tmpkeytab-server" "cifs/${SERVER_FQDN}" \ + "${EXPECTED_NKEYS}" || \ + failed=$((failed + 1)) + +testit "dump keytab from domain for cifs service principal (2nd time)" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ + "$PREFIX/tmpkeytab-server" --principal="cifs/$SERVER_FQDN" \ + "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +test_keytab "read keytab from domain for cifs service principal (2nd time)" \ + "${PREFIX}/tmpkeytab-server" "cifs/${SERVER_FQDN}" \ + "${EXPECTED_NKEYS}" || \ + failed=$((failed + 1)) + +testit "dump keytab from domain for user principal" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ + "${PREFIX}/tmpkeytab-user-princ" --principal="${TEST_USER}" \ + "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +test_keytab "read keytab from domain for user principal" \ + "${PREFIX}/tmpkeytab-user-princ" "${TEST_USER}@${REALM}" \ + "${EXPECTED_NKEYS}" || \ + failed=$((failed + 1)) + +testit "dump keytab from domain for user principal (2nd time)" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ + "${PREFIX}/tmpkeytab-user-princ-2" --principal="${TEST_USER}@${REALM}" \ + "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +test_keytab "read keytab from domain for user principal (2nd time)" \ + "${PREFIX}/tmpkeytab-user-princ-2" "${TEST_USER}@${REALM}" \ + "${EXPECTED_NKEYS}" || \ + failed=$((failed + 1)) + +testit "dump keytab from domain for user principal with SPN as UPN" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" domain exportkeytab \ + "${PREFIX}/tmpkeytab-spn-upn" \ + --principal="http/testupnspn.${DNSDOMAIN}" "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +test_keytab "read keytab from domain for user principal with SPN as UPN" \ + "${PREFIX}/tmpkeytab-spn-upn" "http/testupnspn.${DNSDOMAIN}@${REALM}" \ + "${EXPECTED_NKEYS}" + +KRB5CCNAME_PATH="${PREFIX}/tmpuserccache" +KRB5CCNAME="FILE:${PREFIX}/tmpuserccache" +export KRB5CCNAME + +testit "kinit with keytab as user" \ + "${VALGRIND}" "${samba_kinit}" \ + "${OPTION_USE_KEYTAB}" \ + "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-all" \ + "${TEST_USER}@${REALM}" || \ + failed=$((failed + 1)) + +test_smbclient "Test login with user kerberos ccache" \ + "ls" "${SMBCLIENT_UNC}" --use-krb5-ccache="${KRB5CCNAME}" || \ + failed=$((failed + 1)) + +testit "kinit with keytab as user (one princ)" \ + "${VALGRIND}" "$samba_kinit" \ + "${OPTION_USE_KEYTAB}" \ + "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-user-princ" \ + "${TEST_USER}@$REALM" || \ + failed=$((failed + 1)) + +test_smbclient "Test login with user kerberos ccache (one princ)" \ + "ls" "${SMBCLIENT_UNC}" --use-krb5-ccache="${KRB5CCNAME}" || \ + failed=$((failed + 1)) + +rm -f "${KRB5CCNAME_PATH}" + +KRB5CCNAME_PATH="${PREFIX}/tmpadminccache" +KRB5CCNAME="FILE:${PREFIX}/tmpadminccache" +export KRB5CCNAME + +testit "kinit with keytab as ${USERNAME}" \ + "${VALGRIND}" "${samba_kinit}" \ + "${OPTION_USE_KEYTAB}" \ + "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-all" \ + "${USERNAME}@${REALM}" || \ + failed=$((failed + 1)) + +rm -f "${KRB5CCNAME_PATH}" + +KRB5CCNAME_PATH="${PREFIX}/tmpserverccache" +KRB5CCNAME="FILE:${PREFIX}/tmpserverccache" +export KRB5CCNAME + +testit "kinit with SPN from keytab" \ + "${VALGRIND}" "${samba_kinit}" \ + "${OPTION_USE_KEYTAB}" \ + "${OPTION_KEYTAB_FILENAME}" "${PREFIX}/tmpkeytab-spn-upn" \ + "http/testupnspn.${DNSDOMAIN}" || \ + failed=$((failed + 1)) + +# cleanup +testit "delete user ${TEST_USER}" \ + "${VALGRIND}" "${PYTHON}" "${samba_tool}" user delete "${TEST_USER}" \ + --use-krb5-ccache="${KRB5CCNAME}" "${CONFIGURATION}" "$@" || \ + failed=$((failed + 1)) + +rm -f "${KRB5CCNAME_PATH}" +rm -f "${PREFIX}/tmpadminccache" \ + "${PREFIX}/tmpuserccache" \ + "${PREFIX}/tmpkeytab" \ + "${PREFIX}/tmpkeytab-user-princ" \ + "${PREFIX}/tmpkeytab-user-princ-2" \ + "${PREFIX}/tmpkeytab-server" \ + "${PREFIX}/tmpkeytab-spn-upn" \ + "${PREFIX}/tmpkeytab-all" + +exit $failed -- cgit v1.2.3