114 Map<String,Object> pc = new HashMap<>(); |
113 Map<String,Object> pc = new HashMap<>(); |
115 pc.put("com.sun.security.sasl.ntlm.version", vc); |
114 pc.put("com.sun.security.sasl.ntlm.version", vc); |
116 Map<String,Object> ps = new HashMap<>(); |
115 Map<String,Object> ps = new HashMap<>(); |
117 ps.put("com.sun.security.sasl.ntlm.version", vs); |
116 ps.put("com.sun.security.sasl.ntlm.version", vs); |
118 SaslClient clnt = Sasl.createSaslClient( |
117 SaslClient clnt = Sasl.createSaslClient( |
119 new String[]{MECH}, USER1, PROTOCOL, null, pc, |
118 new String[]{MECH}, USER1, PROTOCOL, REALM, pc, |
120 new CallbackHandler() { |
119 new CallbackHandler() { |
121 public void handle(Callback[] callbacks) |
120 public void handle(Callback[] callbacks) |
122 throws IOException, UnsupportedCallbackException { |
121 throws IOException, UnsupportedCallbackException { |
123 for (Callback cb: callbacks) { |
122 for (Callback cb: callbacks) { |
124 if (cb instanceof NameCallback) { |
123 if (cb instanceof PasswordCallback) { |
125 NameCallback ncb = (NameCallback)cb; |
|
126 ncb.setName(ncb.getDefaultName()); |
|
127 } else if (cb instanceof PasswordCallback) { |
|
128 ((PasswordCallback)cb).setPassword(PASS1); |
124 ((PasswordCallback)cb).setPassword(PASS1); |
129 } |
125 } |
130 } |
126 } |
131 } |
127 } |
132 }); |
128 }); |
157 |
153 |
158 private static void checkClientHostname() throws Exception { |
154 private static void checkClientHostname() throws Exception { |
159 Map<String,Object> pc = new HashMap<>(); |
155 Map<String,Object> pc = new HashMap<>(); |
160 pc.put("com.sun.security.sasl.ntlm.hostname", "this.is.com"); |
156 pc.put("com.sun.security.sasl.ntlm.hostname", "this.is.com"); |
161 SaslClient clnt = Sasl.createSaslClient( |
157 SaslClient clnt = Sasl.createSaslClient( |
162 new String[]{MECH}, USER1, PROTOCOL, null, pc, |
158 new String[]{MECH}, USER1, PROTOCOL, REALM, pc, |
163 new CallbackHandler() { |
159 new CallbackHandler() { |
164 public void handle(Callback[] callbacks) |
160 public void handle(Callback[] callbacks) |
165 throws IOException, UnsupportedCallbackException { |
161 throws IOException, UnsupportedCallbackException { |
166 for (Callback cb: callbacks) { |
162 for (Callback cb: callbacks) { |
167 if (cb instanceof NameCallback) { |
163 if (cb instanceof PasswordCallback) { |
168 NameCallback ncb = (NameCallback)cb; |
|
169 ncb.setName(ncb.getDefaultName()); |
|
170 } else if (cb instanceof PasswordCallback) { |
|
171 ((PasswordCallback)cb).setPassword(PASS1); |
164 ((PasswordCallback)cb).setPassword(PASS1); |
172 } |
165 } |
173 } |
166 } |
174 } |
167 } |
175 }); |
168 }); |
210 new String[]{MECH}, USER1, PROTOCOL, "ANOTHERREALM", null, |
203 new String[]{MECH}, USER1, PROTOCOL, "ANOTHERREALM", null, |
211 new CallbackHandler() { |
204 new CallbackHandler() { |
212 public void handle(Callback[] callbacks) |
205 public void handle(Callback[] callbacks) |
213 throws IOException, UnsupportedCallbackException { |
206 throws IOException, UnsupportedCallbackException { |
214 for (Callback cb: callbacks) { |
207 for (Callback cb: callbacks) { |
215 if (cb instanceof NameCallback) { |
208 if (cb instanceof RealmCallback) { |
216 NameCallback ncb = (NameCallback)cb; |
209 ((RealmCallback)cb).setText(REALM); |
217 ncb.setName(ncb.getDefaultName()); |
|
218 } else if(cb instanceof RealmCallback) { |
|
219 RealmCallback dcb = (RealmCallback)cb; |
|
220 dcb.setText("THIRDDOMAIN"); |
|
221 } else if (cb instanceof PasswordCallback) { |
210 } else if (cb instanceof PasswordCallback) { |
222 ((PasswordCallback)cb).setPassword(PASS1); |
211 ((PasswordCallback)cb).setPassword(PASS1); |
223 } |
212 } |
224 } |
213 } |
225 } |
214 } |
253 * Client side user name provided in callback. |
242 * Client side user name provided in callback. |
254 * @throws Exception |
243 * @throws Exception |
255 */ |
244 */ |
256 private static void checkClientNameOverride() throws Exception { |
245 private static void checkClientNameOverride() throws Exception { |
257 SaslClient clnt = Sasl.createSaslClient( |
246 SaslClient clnt = Sasl.createSaslClient( |
258 new String[]{MECH}, null, PROTOCOL, null, null, |
247 new String[]{MECH}, "someone", PROTOCOL, REALM, null, |
259 new CallbackHandler() { |
248 new CallbackHandler() { |
260 public void handle(Callback[] callbacks) |
249 public void handle(Callback[] callbacks) |
261 throws IOException, UnsupportedCallbackException { |
250 throws IOException, UnsupportedCallbackException { |
262 for (Callback cb: callbacks) { |
251 for (Callback cb: callbacks) { |
263 if (cb instanceof NameCallback) { |
252 if (cb instanceof NameCallback) { |
264 NameCallback ncb = (NameCallback)cb; |
253 NameCallback ncb = (NameCallback) cb; |
265 ncb.setName(USER1); |
254 ncb.setName(USER1); |
266 } else if (cb instanceof PasswordCallback) { |
255 } else if (cb instanceof PasswordCallback) { |
267 ((PasswordCallback)cb).setPassword(PASS1); |
256 ((PasswordCallback)cb).setPassword(PASS1); |
268 } |
257 } |
269 } |
258 } |
270 } |
259 } |
271 }); |
260 }); |
272 |
261 |
273 SaslServer srv = Sasl.createSaslServer(MECH, PROTOCOL, REALM, null, |
262 SaslServer srv = Sasl.createSaslServer(MECH, PROTOCOL, "FAKE", null, |
274 new CallbackHandler() { |
|
275 public void handle(Callback[] callbacks) |
|
276 throws IOException, UnsupportedCallbackException { |
|
277 String domain = null, name = null; |
|
278 PasswordCallback pcb = null; |
|
279 for (Callback cb: callbacks) { |
|
280 if (cb instanceof NameCallback) { |
|
281 name = ((NameCallback)cb).getDefaultName(); |
|
282 } else if (cb instanceof RealmCallback) { |
|
283 domain = ((RealmCallback)cb).getDefaultText(); |
|
284 } else if (cb instanceof PasswordCallback) { |
|
285 pcb = (PasswordCallback)cb; |
|
286 } |
|
287 } |
|
288 if (pcb != null) { |
|
289 pcb.setPassword(getPass(domain, name)); |
|
290 } |
|
291 } |
|
292 }); |
|
293 |
|
294 handshake(clnt, srv); |
|
295 } |
|
296 |
|
297 /** |
|
298 * server side domain provided in props. |
|
299 * @throws Exception |
|
300 */ |
|
301 private static void checkServerDomainOverride() throws Exception { |
|
302 SaslClient clnt = Sasl.createSaslClient( |
|
303 new String[]{MECH}, USER1, PROTOCOL, null, null, |
|
304 new CallbackHandler() { |
|
305 public void handle(Callback[] callbacks) |
|
306 throws IOException, UnsupportedCallbackException { |
|
307 for (Callback cb: callbacks) { |
|
308 if (cb instanceof NameCallback) { |
|
309 NameCallback ncb = (NameCallback)cb; |
|
310 ncb.setName(ncb.getDefaultName()); |
|
311 } else if (cb instanceof PasswordCallback) { |
|
312 ((PasswordCallback)cb).setPassword(PASS1); |
|
313 } |
|
314 } |
|
315 } |
|
316 }); |
|
317 |
|
318 Map<String,Object> ps = new HashMap<>(); |
|
319 ps.put("com.sun.security.sasl.ntlm.domain", REALM); |
|
320 SaslServer srv = Sasl.createSaslServer(MECH, PROTOCOL, null, ps, |
|
321 new CallbackHandler() { |
263 new CallbackHandler() { |
322 public void handle(Callback[] callbacks) |
264 public void handle(Callback[] callbacks) |
323 throws IOException, UnsupportedCallbackException { |
265 throws IOException, UnsupportedCallbackException { |
324 String domain = null, name = null; |
266 String domain = null, name = null; |
325 PasswordCallback pcb = null; |
267 PasswordCallback pcb = null; |