2 # Blackbox tests for kinit and kerberos integration with smbclient etc
3 # Copyright (C) 2006-2007 Jelmer Vernooij <jelmer@samba.org>
4 # Copyright (C) 2006-2008 Andrew Bartlett <abartlet@samba.org>
8 Usage: test_kinit.sh SERVER USERNAME PASSWORD REALM DOMAIN PREFIX ENCTYPE SMBCLINET
24 samba4bindir
="$BINDIR"
25 samba4srcdir
="$SRCDIR/source4"
27 if test -x $BINDIR/samba4kinit
; then
28 samba4kinit
=$BINDIR/samba4kinit
31 samba_tool
="$samba4bindir/samba-tool"
32 wbinfo
="$samba4bindir/wbinfo"
34 if test -x $BINDIR/samba4kpasswd
; then
35 samba4passwd
=$BINDIR/samba4kpasswd
39 if [ -x "$samba4bindir/ldbmodify" ]; then
40 ldbmodify
="$samba4bindir/ldbmodify"
44 if [ -x "$samba4bindir/ldbsearch" ]; then
45 ldbsearch
="$samba4bindir/ldbsearch"
48 .
`dirname $0`/subunit.sh
49 .
`dirname $0`/common_test_fns.inc
54 KRB5CCNAME_PATH
="$PREFIX/tmpccache"
55 KRB5CCNAME
="FILE:$KRB5CCNAME_PATH"
57 rm -f $KRB5CCNAME_PATH
58 PASSFILE_PATH
="$PREFIX/tmppassfile"
60 echo $PASSWORD > $PASSFILE_PATH
62 USER_PRINCIPAL_NAME
=`echo "${USERNAME}@${REALM}" | tr A-Z a-z`
63 PKUSER
="--pk-user=FILE:$PREFIX/pkinit/USER-${USER_PRINCIPAL_NAME}-cert.pem,$PREFIX/pkinit/USER-${USER_PRINCIPAL_NAME}-private-key.pem"
66 # Now we set the UF_SMARTCARD_REQUIRED bit
67 # This means we have a normal enabled account *without* a known password
68 testit
"STEP1 samba-tool user create $USERNAME --smartcard-required" ${samba_tool} user create
$USERNAME --smartcard-required || failed
=`expr $failed + 1`
70 testit_expect_failure
"STEP1 kinit with password" $samba4kinit $enctype --password-file=$PASSFILE_PATH --request-pac $USERNAME@
$REALM && failed
=`expr $failed + 1`
71 testit_expect_failure
"STEP1 Test login with NTLM" $smbclient "$unc" -c 'ls' -k no
-U$USERNAME%$PASSWORD && failed
=`expr $failed + 1`
72 testit_expect_failure
"STEP1 Test wbinfo with password" $wbinfo --authenticate=$DOMAIN/$USERNAME%$PASSWORD && failed
=`expr $failed + 1`
74 testit
"STEP1 kinit with pkinit (name specified) " $samba4kinit $enctype --request-pac --renewable $PKUSER $USERNAME@
$REALM || failed
=`expr $failed + 1`
75 testit
"STEP1 kinit renew ticket (name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
76 test_smbclient
"STEP1 Test login with kerberos ccache (name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
78 testit
"STEP1 kinit with pkinit (enterprise name specified)" $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise $USERNAME@
$REALM || failed
=`expr $failed + 1`
79 testit
"STEP1 kinit renew ticket (enterprise name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
80 test_smbclient
"STEP1 Test login with kerberos ccache (enterprise name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
82 testit
"STEP1 kinit with pkinit (enterprise name in cert)" $samba4kinit $enctype --request-pac --renewable $PKUSER --pk-enterprise || failed
=`expr $failed + 1`
83 testit
"STEP1 kinit renew ticket (enterprise name in cert)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
84 test_smbclient
"STEP1 Test login with kerberos ccache (enterprise name in cert)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
87 # We still have UF_SMARTCARD_REQUIRED, but with a known password
88 testit
"STEP2 samba-tool user setpassword $USERNAME --newpassword" ${samba_tool} user setpassword
$USERNAME --newpassword=$PASSWORD || failed
=`expr $failed + 1`
90 testit_expect_failure
"STEP2 kinit with password" $samba4kinit $enctype --password-file=$PASSFILE_PATH --request-pac $USERNAME@
$REALM && failed
=`expr $failed + 1`
91 test_smbclient
"STEP2 Test login with NTLM" 'ls' "$unc" -k no
-U$USERNAME%$PASSWORD || failed
=`expr $failed + 1`
92 testit_expect_failure
"STEP2 Test wbinfo with password" $wbinfo --authenticate=$DOMAIN/$USERNAME%$PASSWORD && failed
=`expr $failed + 1`
94 testit
"STEP2 kinit with pkinit (name specified) " $samba4kinit $enctype --request-pac --renewable $PKUSER $USERNAME@
$REALM || failed
=`expr $failed + 1`
95 testit
"STEP2 kinit renew ticket (name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
96 test_smbclient
"STEP2 Test login with kerberos ccache (name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
98 testit
"STEP2 kinit with pkinit (enterprise name specified)" $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise $USERNAME@
$REALM || failed
=`expr $failed + 1`
99 testit
"STEP2 kinit renew ticket (enterprise name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
100 test_smbclient
"STEP2 Test login with kerberos ccache (enterprise name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
102 testit
"STEP2 kinit with pkinit (enterprise name in cert)" $samba4kinit $enctype --request-pac --renewable $PKUSER --pk-enterprise || failed
=`expr $failed + 1`
103 testit
"STEP2 kinit renew ticket (enterprise name in cert)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
104 test_smbclient
"STEP2 Test login with kerberos ccache (enterprise name in cert)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
107 # The account is a normal account without the UF_SMARTCARD_REQUIRED bit set
108 testit
"STEP3 samba-tool user setpassword $USERNAME --smartcard-required" ${samba_tool} user setpassword
$USERNAME --newpassword=$PASSWORD --clear-smartcard-required || failed
=`expr $failed + 1`
110 testit
"STEP3 kinit with password" $samba4kinit $enctype --password-file=$PASSFILE_PATH --request-pac $USERNAME@
$REALM || failed
=`expr $failed + 1`
111 test_smbclient
"STEP3 Test login with user kerberos ccache" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
112 test_smbclient
"STEP3 Test login with NTLM" 'ls' "$unc" -k no
-U$USERNAME%$PASSWORD || failed
=`expr $failed + 1`
113 testit
"STEP3 Test wbinfo with password" $wbinfo --authenticate=$DOMAIN/$USERNAME%$PASSWORD || failed
=`expr $failed + 1`
115 testit
"STEP3 kinit with pkinit (name specified) " $samba4kinit $enctype --request-pac --renewable $PKUSER $USERNAME@
$REALM || failed
=`expr $failed + 1`
116 testit
"STEP3 kinit renew ticket (name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
117 test_smbclient
"STEP3 Test login with kerberos ccache (name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
119 testit
"STEP3 kinit with pkinit (enterprise name specified)" $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise $USERNAME@
$REALM || failed
=`expr $failed + 1`
120 testit
"STEP3 kinit renew ticket (enterprise name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
121 test_smbclient
"STEP3 Test login with kerberos ccache (enterprise name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
123 testit
"STEP3 kinit with pkinit (enterprise name in cert)" $samba4kinit $enctype --request-pac --renewable $PKUSER --pk-enterprise || failed
=`expr $failed + 1`
124 testit
"STEP3 kinit renew ticket (enterprise name in cert)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
125 test_smbclient
"STEP3 Test login with kerberos ccache (enterprise name in cert)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
128 # Now we set the UF_SMARTCARD_REQUIRED bit
129 # This means we have a normal enabled account *without* a known password
130 testit
"STEP4 samba-tool user setpassword $USERNAME --smartcard-required" ${samba_tool} user setpassword
$USERNAME --smartcard-required || failed
=`expr $failed + 1`
132 testit_expect_failure
"STEP4 kinit with password" $samba4kinit $enctype --password-file=$PASSFILE_PATH --request-pac $USERNAME@
$REALM && failed
=`expr $failed + 1`
133 testit_expect_failure
"STEP4 Test login with NTLM" $smbclient "$unc" -c 'ls' -k no
-U$USERNAME%$PASSWORD && failed
=`expr $failed + 1`
134 testit_expect_failure
"STEP4 Test wbinfo with password" $wbinfo --authenticate=$DOMAIN/$USERNAME%$PASSWORD && failed
=`expr $failed + 1`
136 testit
"STEP4 kinit with pkinit (name specified) " $samba4kinit $enctype --request-pac --renewable $PKUSER $USERNAME@
$REALM || failed
=`expr $failed + 1`
137 testit
"STEP4 kinit renew ticket (name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
138 test_smbclient
"STEP4 Test login with kerberos ccache (name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
140 testit
"STEP4 kinit with pkinit (enterprise name specified)" $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise $USERNAME@
$REALM || failed
=`expr $failed + 1`
141 testit
"STEP4 kinit renew ticket (enterprise name specified)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
142 test_smbclient
"STEP4 Test login with kerberos ccache (enterprise name specified)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
144 testit
"STEP4 kinit with pkinit (enterprise name in cert)" $samba4kinit $enctype --request-pac --renewable $PKUSER --pk-enterprise || failed
=`expr $failed + 1`
145 testit
"STEP4 kinit renew ticket (enterprise name in cert)" $samba4kinit --request-pac -R || failed
=`expr $failed + 1`
146 test_smbclient
"STEP4 Test login with kerberos ccache (enterprise name in cert)" 'ls' "$unc" -k yes || failed
=`expr $failed + 1`
149 # disable the account
150 testit
"STEP5 samba-tool user disable $USERNAME" ${samba_tool} user disable
$USERNAME || failed
=`expr $failed + 1`
152 testit_expect_failure
"STEP5 kinit with password" $samba4kinit $enctype --password-file=$PASSFILE_PATH --request-pac $USERNAME@
$REALM && failed
=`expr $failed + 1`
153 testit_expect_failure
"STEP5 Test login with NTLM" $smbclient "$unc" -c 'ls' -k no
-U$USERNAME%$PASSWORD && failed
=`expr $failed + 1`
154 testit_expect_failure
"STEP5 Test wbinfo with password" $wbinfo --authenticate=$DOMAIN/$USERNAME%$PASSWORD && failed
=`expr $failed + 1`
156 testit_expect_failure
"STEP5 kinit with pkinit (name specified) " $samba4kinit $enctype --request-pac --renewable $PKUSER $USERNAME@
$REALM && failed
=`expr $failed + 1`
157 testit_expect_failure
"STEP5 kinit with pkinit (enterprise name specified)" $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise $USERNAME@
$REALM && failed
=`expr $failed + 1`
158 testit_expect_failure
"STEP5 kinit with pkinit (enterprise name in cert)" $samba4kinit $enctype --request-pac --renewable $PKUSER --pk-enterprise && failed
=`expr $failed + 1`
162 testit
"STEP6 samba-tool user delete $USERNAME " ${samba_tool} user delete
$USERNAME || failed
=`expr $failed + 2`
165 rm -f $KRB5CCNAME_PATH