test028-idassert revision 1.1 1 1.1 lukem #! /bin/sh
2 1.1 lukem # $OpenLDAP: pkg/ldap/tests/scripts/test028-idassert,v 1.12.2.3 2008/02/11 23:26:51 kurt Exp $
3 1.1 lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 1.1 lukem ##
5 1.1 lukem ## Copyright 1998-2008 The OpenLDAP Foundation.
6 1.1 lukem ## All rights reserved.
7 1.1 lukem ##
8 1.1 lukem ## Redistribution and use in source and binary forms, with or without
9 1.1 lukem ## modification, are permitted only as authorized by the OpenLDAP
10 1.1 lukem ## Public License.
11 1.1 lukem ##
12 1.1 lukem ## A copy of this license is available in the file LICENSE in the
13 1.1 lukem ## top-level directory of the distribution or, alternatively, at
14 1.1 lukem ## <http://www.OpenLDAP.org/license.html>.
15 1.1 lukem
16 1.1 lukem echo "running defines.sh"
17 1.1 lukem . $SRCDIR/scripts/defines.sh
18 1.1 lukem
19 1.1 lukem echo "### This test requires the LDAP backend and the rwm overlay."
20 1.1 lukem echo "### If available, and explicitly requested, it can use SASL bind;"
21 1.1 lukem echo "### note that SASL must be properly set up, and the requested"
22 1.1 lukem echo "### mechanism must be available. Define SLAPD_USE_SASL={yes|<mech>},"
23 1.1 lukem echo "### with \"yes\" defaulting to DIGEST-MD5 to enable SASL authc[/authz]."
24 1.1 lukem
25 1.1 lukem if test $BACKLDAP = "ldapno" ; then
26 1.1 lukem echo "LDAP backend not available, test skipped"
27 1.1 lukem exit 0
28 1.1 lukem fi
29 1.1 lukem
30 1.1 lukem if test $RWM = "rwmno" ; then
31 1.1 lukem echo "Rewrite/remap overlay not available, test skipped"
32 1.1 lukem exit 0
33 1.1 lukem fi
34 1.1 lukem
35 1.1 lukem if test $THREADS = "threadsno" ; then
36 1.1 lukem echo "Need threads support, test skipped"
37 1.1 lukem exit 0
38 1.1 lukem fi
39 1.1 lukem
40 1.1 lukem if test $WITH_SASL = "yes" ; then
41 1.1 lukem if test $USE_SASL != "no" ; then
42 1.1 lukem if test $USE_SASL = "yes" ; then
43 1.1 lukem MECH="DIGEST-MD5"
44 1.1 lukem else
45 1.1 lukem MECH="$USE_SASL"
46 1.1 lukem fi
47 1.1 lukem echo "Using SASL authc[/authz] with mech=$MECH; unset SLAPD_USE_SASL to disable"
48 1.1 lukem else
49 1.1 lukem echo "Using proxyAuthz with simple authc..."
50 1.1 lukem fi
51 1.1 lukem else
52 1.1 lukem echo "SASL not available; using proxyAuthz with simple authc..."
53 1.1 lukem fi
54 1.1 lukem
55 1.1 lukem mkdir -p $TESTDIR $DBDIR1 $DBDIR2
56 1.1 lukem
57 1.1 lukem echo "Running slapadd to build slapd database..."
58 1.1 lukem . $CONFFILTER $BACKEND $MONITORDB < $IDASSERTCONF > $ADDCONF
59 1.1 lukem $SLAPADD -f $ADDCONF -l $LDIFIDASSERT1 -n 1
60 1.1 lukem RC=$?
61 1.1 lukem if test $RC != 0 ; then
62 1.1 lukem echo "slapadd -n 1 failed ($RC)!"
63 1.1 lukem exit $RC
64 1.1 lukem fi
65 1.1 lukem $SLAPADD -f $ADDCONF -l $LDIFIDASSERT2 -n 2
66 1.1 lukem RC=$?
67 1.1 lukem if test $RC != 0 ; then
68 1.1 lukem echo "slapadd -n 2 failed ($RC)!"
69 1.1 lukem exit $RC
70 1.1 lukem fi
71 1.1 lukem
72 1.1 lukem echo "Starting slapd on TCP/IP port $PORT..."
73 1.1 lukem . $CONFFILTER $BACKEND $MONITORDB < $IDASSERTCONF > $CONF1
74 1.1 lukem $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
75 1.1 lukem PID=$!
76 1.1 lukem if test $WAIT != 0 ; then
77 1.1 lukem echo PID $PID
78 1.1 lukem read foo
79 1.1 lukem fi
80 1.1 lukem KILLPIDS="$PID"
81 1.1 lukem
82 1.1 lukem sleep 1
83 1.1 lukem
84 1.1 lukem echo "Using ldapsearch to check that slapd is running..."
85 1.1 lukem for i in 0 1 2 3 4 5; do
86 1.1 lukem $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
87 1.1 lukem 'objectclass=*' > /dev/null 2>&1
88 1.1 lukem RC=$?
89 1.1 lukem if test $RC = 0 ; then
90 1.1 lukem break
91 1.1 lukem fi
92 1.1 lukem echo "Waiting 5 seconds for slapd to start..."
93 1.1 lukem sleep 5
94 1.1 lukem done
95 1.1 lukem
96 1.1 lukem echo "Testing ldapwhoami as proxy US..."
97 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy US,ou=Admin,dc=example,dc=com" -w proxy
98 1.1 lukem RC=$?
99 1.1 lukem if test $RC != 0 ; then
100 1.1 lukem echo "ldapwhoami failed ($RC)!"
101 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
102 1.1 lukem exit $RC
103 1.1 lukem fi
104 1.1 lukem
105 1.1 lukem AUTHZID="u:it/jaj"
106 1.1 lukem echo "Testing ldapwhoami as proxy US, $AUTHZID..."
107 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy US,ou=Admin,dc=example,dc=com" -w proxy -e\!"authzid=$AUTHZID"
108 1.1 lukem RC=$?
109 1.1 lukem if test $RC != 0 ; then
110 1.1 lukem echo "ldapwhoami failed ($RC)!"
111 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
112 1.1 lukem exit $RC
113 1.1 lukem fi
114 1.1 lukem
115 1.1 lukem AUTHZID="u:bjorn"
116 1.1 lukem echo "Testing ldapwhoami as proxy US, $AUTHZID... (should fail)"
117 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy US,ou=Admin,dc=example,dc=com" -w proxy -e\!"authzid=$AUTHZID"
118 1.1 lukem RC=$?
119 1.1 lukem if test $RC != 1 ; then
120 1.1 lukem echo "ldapwhoami should have failed ($RC)!"
121 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
122 1.1 lukem exit $RC
123 1.1 lukem fi
124 1.1 lukem
125 1.1 lukem AUTHZID="u:bjensen"
126 1.1 lukem echo "Testing ldapwhoami as proxy US, $AUTHZID... (should fail)"
127 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy US,ou=Admin,dc=example,dc=com" -w proxy -e\!"authzid=$AUTHZID"
128 1.1 lukem RC=$?
129 1.1 lukem if test $RC != 1 ; then
130 1.1 lukem echo "ldapwhoami should have failed ($RC)!"
131 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
132 1.1 lukem exit $RC
133 1.1 lukem fi
134 1.1 lukem
135 1.1 lukem echo "Testing ldapwhoami as proxy IT..."
136 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy IT,ou=Admin,dc=example,dc=com" -w proxy
137 1.1 lukem RC=$?
138 1.1 lukem if test $RC != 0 ; then
139 1.1 lukem echo "ldapwhoami failed ($RC)!"
140 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
141 1.1 lukem exit $RC
142 1.1 lukem fi
143 1.1 lukem
144 1.1 lukem AUTHZID="u:it/jaj"
145 1.1 lukem echo "Testing ldapwhoami as proxy IT, $AUTHZID... (should fail)"
146 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy IT,ou=Admin,dc=example,dc=com" -w proxy -e\!"authzid=$AUTHZID"
147 1.1 lukem RC=$?
148 1.1 lukem if test $RC != 1 ; then
149 1.1 lukem echo "ldapwhoami should have failed ($RC)!"
150 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
151 1.1 lukem exit $RC
152 1.1 lukem fi
153 1.1 lukem
154 1.1 lukem AUTHZID="u:bjorn"
155 1.1 lukem echo "Testing ldapwhoami as proxy IT, $AUTHZID... (should fail)"
156 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy IT,ou=Admin,dc=example,dc=com" -w proxy -e\!"authzid=$AUTHZID"
157 1.1 lukem RC=$?
158 1.1 lukem if test $RC != 1 ; then
159 1.1 lukem echo "ldapwhoami should have failed ($RC)!"
160 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
161 1.1 lukem exit $RC
162 1.1 lukem fi
163 1.1 lukem
164 1.1 lukem AUTHZID="dn:cn=Sandbox,ou=Admin,dc=example,dc=com"
165 1.1 lukem echo "Testing ldapwhoami as proxy IT, $AUTHZID..."
166 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "cn=proxy IT,ou=Admin,dc=example,dc=com" -w proxy -e\!"authzid=$AUTHZID"
167 1.1 lukem RC=$?
168 1.1 lukem if test $RC != 0 ; then
169 1.1 lukem echo "ldapwhoami failed ($RC)!"
170 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
171 1.1 lukem exit $RC
172 1.1 lukem fi
173 1.1 lukem
174 1.1 lukem AUTHZID="dn:uid=bjorn,ou=People,o=Example,c=US"
175 1.1 lukem echo "Testing ldapwhoami as bjorn, $AUTHZID..."
176 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "uid=bjorn,ou=people,dc=example,dc=com" -w bjorn -e\!"authzid=$AUTHZID"
177 1.1 lukem RC=$?
178 1.1 lukem if test $RC != 0 ; then
179 1.1 lukem echo "ldapwhoami failed ($RC)!"
180 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
181 1.1 lukem exit $RC
182 1.1 lukem fi
183 1.1 lukem
184 1.1 lukem AUTHZID="dn:uid=bjorn,ou=People,o=Esempio,c=IT"
185 1.1 lukem echo "Testing ldapwhoami as bjorn, $AUTHZID..."
186 1.1 lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 -D "uid=bjorn,ou=people,dc=example,dc=com" -w bjorn -e\!"authzid=$AUTHZID"
187 1.1 lukem RC=$?
188 1.1 lukem if test $RC != 0 ; then
189 1.1 lukem echo "ldapwhoami failed ($RC)!"
190 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
191 1.1 lukem exit $RC
192 1.1 lukem fi
193 1.1 lukem
194 1.1 lukem ID="uid=jaj,ou=People,dc=example,dc=it"
195 1.1 lukem BASE="o=Example,c=US"
196 1.1 lukem echo "Testing ldapsearch as $ID for \"$BASE\"..."
197 1.1 lukem $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASE" \
198 1.1 lukem -D "$ID" -w jaj > $SEARCHOUT 2>&1
199 1.1 lukem
200 1.1 lukem RC=$?
201 1.1 lukem if test $RC != 0 ; then
202 1.1 lukem echo "ldapsearch failed ($RC)!"
203 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
204 1.1 lukem exit $RC
205 1.1 lukem fi
206 1.1 lukem
207 1.1 lukem echo "Filtering ldapsearch results..."
208 1.1 lukem . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
209 1.1 lukem echo "Filtering original ldif used to create database..."
210 1.1 lukem . $LDIFFILTER < $IDASSERTOUT > $LDIFFLT
211 1.1 lukem echo "Comparing filter output..."
212 1.1 lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
213 1.1 lukem
214 1.1 lukem if test $? != 0 ; then
215 1.1 lukem echo "comparison failed - search with identity assertion didn't succeed"
216 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
217 1.1 lukem exit 1
218 1.1 lukem fi
219 1.1 lukem
220 1.1 lukem if test $USE_SASL != "no" ; then
221 1.1 lukem ID="it/jaj"
222 1.1 lukem BASE="o=Example,c=US"
223 1.1 lukem echo "Testing ldapsearch as $ID for \"$BASE\" with SASL bind and identity assertion..."
224 1.1 lukem $LDAPSASLSEARCH -h $LOCALHOST -p $PORT1 -b "$BASE" \
225 1.1 lukem -Q -U "$ID" -w jaj -Y $MECH > $SEARCHOUT 2>&1
226 1.1 lukem
227 1.1 lukem RC=$?
228 1.1 lukem if test $RC != 0 ; then
229 1.1 lukem echo "ldapsearch failed ($RC)!"
230 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
231 1.1 lukem exit $RC
232 1.1 lukem fi
233 1.1 lukem
234 1.1 lukem echo "Filtering ldapsearch results..."
235 1.1 lukem . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
236 1.1 lukem echo "Filtering original ldif used to create database..."
237 1.1 lukem . $LDIFFILTER < $IDASSERTOUT > $LDIFFLT
238 1.1 lukem echo "Comparing filter output..."
239 1.1 lukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
240 1.1 lukem
241 1.1 lukem if test $? != 0 ; then
242 1.1 lukem echo "comparison failed - search with SASL bind and identity assertion didn't succeed"
243 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
244 1.1 lukem exit 1
245 1.1 lukem fi
246 1.1 lukem fi
247 1.1 lukem
248 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
249 1.1 lukem
250 1.1 lukem echo ">>>>> Test succeeded"
251 1.1 lukem
252 1.1 lukem test $KILLSERVERS != no && wait
253 1.1 lukem
254 1.1 lukem exit 0
255