1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package edu.internet2.middleware.shibboleth.common.config.attribute.resolver.dataConnector;
18
19 import java.util.Map;
20
21 import org.opensaml.xml.security.x509.X509Credential;
22 import org.opensaml.xml.util.DatatypeHelper;
23
24 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.LdapDataConnector;
25 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.TemplateEngine;
26 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.LdapDataConnector.AUTHENTICATION_TYPE;
27 import edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.LdapDataConnector.SEARCH_SCOPE;
28
29
30
31
32 public class LdapDataConnectorFactoryBean extends BaseDataConnectorFactoryBean {
33
34
35 private TemplateEngine templateEngine;
36
37
38 private String ldapURL;
39
40
41 private String baseDN;
42
43
44 private String principal;
45
46
47 private String principalCredential;
48
49
50 private AUTHENTICATION_TYPE authenticationType;
51
52
53 private String filterTemplate;
54
55
56 private SEARCH_SCOPE searchScope;
57
58
59 private String[] returnAttributes;
60
61
62 private Map<String, String> ldapProperties;
63
64
65 private boolean useStartTLS;
66
67
68 private X509Credential trustCredential;
69
70
71 private X509Credential connectionCredential;
72
73
74 private int poolInitialSize;
75
76
77 private int poolMaxIdle;
78
79
80 private int searchTimeLimit;
81
82
83 private int maxResultSize;
84
85
86 private boolean cacheResults;
87
88
89 private boolean mergeResults;
90
91
92 private boolean noResultsIsError;
93
94
95 protected Object createInstance() throws Exception {
96 LdapDataConnector connector = new LdapDataConnector(ldapURL, baseDN, useStartTLS, poolInitialSize, poolMaxIdle);
97 populateDataConnector(connector);
98 connector.setAuthenticationType(authenticationType);
99 connector.setPrincipal(principal);
100 connector.setPrincipalCredential(principalCredential);
101 connector.setLdapProperties(ldapProperties);
102
103 if(trustCredential != null){
104 connector.setSslTrustManagers(trustCredential);
105 }
106
107 if(connectionCredential != null){
108 connector.setSslKeyManagers(connectionCredential);
109 }
110
111 connector.setCacheResults(cacheResults);
112 connector.setFilterTemplate(filterTemplate);
113 connector.setMaxResultSize(maxResultSize);
114 connector.setMergeResults(mergeResults);
115 connector.setNoResultsIsError(noResultsIsError);
116 connector.setReturnAttributes(returnAttributes);
117 connector.setSearchScope(searchScope);
118 connector.setSearchTimeLimit(searchTimeLimit);
119 connector.setTemplateEngine(templateEngine);
120
121 connector.initialize();
122
123 return connector;
124 }
125
126
127
128
129
130
131 public AUTHENTICATION_TYPE getAuthenticationType() {
132 return authenticationType;
133 }
134
135
136
137
138
139
140 public String getBaseDN() {
141 return baseDN;
142 }
143
144
145
146
147
148
149 public X509Credential getConnectionCredential() {
150 return connectionCredential;
151 }
152
153
154
155
156
157
158 public String getFilterTemplate() {
159 return filterTemplate;
160 }
161
162
163
164
165
166
167 public Map<String, String> getLdapProperties() {
168 return ldapProperties;
169 }
170
171
172
173
174
175
176 public String getLdapUrl() {
177 return ldapURL;
178 }
179
180
181
182
183
184
185 public int getMaxResultSize() {
186 return maxResultSize;
187 }
188
189
190 public Class getObjectType() {
191 return LdapDataConnector.class;
192 }
193
194
195
196
197
198
199 public int getPoolInitialSize() {
200 return poolInitialSize;
201 }
202
203
204
205
206
207
208 public int getPoolMaxIdleSize() {
209 return poolMaxIdle;
210 }
211
212
213
214
215
216
217 public String getPrincipal() {
218 return principal;
219 }
220
221
222
223
224
225
226 public String getPrincipalCredential() {
227 return principalCredential;
228 }
229
230
231
232
233
234
235 public String[] getReturnAttributes() {
236 return returnAttributes;
237 }
238
239
240
241
242
243
244 public SEARCH_SCOPE getSearchScope() {
245 return searchScope;
246 }
247
248
249
250
251
252
253 public int getSearchTimeLimit() {
254 return searchTimeLimit;
255 }
256
257
258
259
260
261
262 public TemplateEngine getTemplateEngine() {
263 return templateEngine;
264 }
265
266
267
268
269
270
271 public X509Credential getTrustCredential() {
272 return trustCredential;
273 }
274
275
276
277
278
279
280 public boolean getUseStartTLS() {
281 return useStartTLS;
282 }
283
284
285
286
287
288
289 public boolean isCacheResults() {
290 return cacheResults;
291 }
292
293
294
295
296
297
298 public boolean isMergeResults() {
299 return mergeResults;
300 }
301
302
303
304
305
306
307 public boolean isNoResultsIsError() {
308 return noResultsIsError;
309 }
310
311
312
313
314
315
316 public void setAuthenticationType(AUTHENTICATION_TYPE type) {
317 authenticationType = type;
318 }
319
320
321
322
323
324
325 public void setBaseDN(String dn) {
326 baseDN = DatatypeHelper.safeTrimOrNullString(dn);
327 }
328
329
330
331
332
333
334 public void setCacheResults(boolean cache) {
335 cacheResults = cache;
336 }
337
338
339
340
341
342
343 public void setConnectionCredential(X509Credential credential) {
344 connectionCredential = credential;
345 }
346
347
348
349
350
351
352 public void setFilterTemplate(String template) {
353 filterTemplate = DatatypeHelper.safeTrimOrNullString(template);
354 }
355
356
357
358
359
360
361 public void setLdapProperties(Map<String, String> properties) {
362 ldapProperties = properties;
363 }
364
365
366
367
368
369
370 public void setLdapUrl(String url) {
371 ldapURL = DatatypeHelper.safeTrimOrNullString(url);
372 }
373
374
375
376
377
378
379 public void setMaxResultSize(int max) {
380 maxResultSize = max;
381 }
382
383
384
385
386
387
388 public void setMergeResults(boolean merge) {
389 mergeResults = merge;
390 }
391
392
393
394
395
396
397 public void setNoResultsIsError(boolean isError) {
398 noResultsIsError = isError;
399 }
400
401
402
403
404
405
406 public void setPoolInitialSize(int initialSize) {
407 poolInitialSize = initialSize;
408 }
409
410
411
412
413
414
415 public void setPoolMaxIdleSize(int maxIdle) {
416 poolMaxIdle = maxIdle;
417 }
418
419
420
421
422
423
424 public void setPrincipal(String principalName) {
425 principal = DatatypeHelper.safeTrimOrNullString(principalName);
426 }
427
428
429
430
431
432
433 public void setPrincipalCredential(String credential) {
434 principalCredential = DatatypeHelper.safeTrimOrNullString(credential);
435 }
436
437
438
439
440
441
442 public void setReturnAttributes(String[] attributes) {
443 returnAttributes = attributes;
444 }
445
446
447
448
449
450
451 public void setSearchScope(SEARCH_SCOPE scope) {
452 searchScope = scope;
453 }
454
455
456
457
458
459
460 public void setSearchTimeLimit(int timeLimit) {
461 searchTimeLimit = timeLimit;
462 }
463
464
465
466
467
468
469 public void setTemplateEngine(TemplateEngine engine) {
470 templateEngine = engine;
471 }
472
473
474
475
476
477
478 public void setTrustCredential(X509Credential credential) {
479 trustCredential = credential;
480 }
481
482
483
484
485
486
487 public void setUseStartTLS(boolean startTLS) {
488 useStartTLS = startTLS;
489 }
490 }