xref: /OpenGrok/plugins/src/main/java/opengrok/auth/plugin/ldap/AbstractLdapProvider.java (revision c6f0939b1c668e9f8e1e276424439c3106b3a029)
1b28a5538SAdam Hornacek /*
2b28a5538SAdam Hornacek  * CDDL HEADER START
3b28a5538SAdam Hornacek  *
4b28a5538SAdam Hornacek  * The contents of this file are subject to the terms of the
5b28a5538SAdam Hornacek  * Common Development and Distribution License (the "License").
6b28a5538SAdam Hornacek  * You may not use this file except in compliance with the License.
7b28a5538SAdam Hornacek  *
8b28a5538SAdam Hornacek  * See LICENSE.txt included in this distribution for the specific
9b28a5538SAdam Hornacek  * language governing permissions and limitations under the License.
10b28a5538SAdam Hornacek  *
11b28a5538SAdam Hornacek  * When distributing Covered Code, include this CDDL HEADER in each
12b28a5538SAdam Hornacek  * file and include the License file at LICENSE.txt.
13b28a5538SAdam Hornacek  * If applicable, add the following below this CDDL HEADER, with the
14b28a5538SAdam Hornacek  * fields enclosed by brackets "[]" replaced with your own identifying
15b28a5538SAdam Hornacek  * information: Portions Copyright [yyyy] [name of copyright owner]
16b28a5538SAdam Hornacek  *
17b28a5538SAdam Hornacek  * CDDL HEADER END
18b28a5538SAdam Hornacek  */
19b28a5538SAdam Hornacek 
20b28a5538SAdam Hornacek /*
21*c6f0939bSAdam Hornacek  * Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
22b28a5538SAdam Hornacek  */
23b28a5538SAdam Hornacek package opengrok.auth.plugin.ldap;
24b28a5538SAdam Hornacek 
25b28a5538SAdam Hornacek import java.util.Map;
26b28a5538SAdam Hornacek import java.util.Set;
27b28a5538SAdam Hornacek 
28b28a5538SAdam Hornacek public abstract class AbstractLdapProvider {
29b28a5538SAdam Hornacek 
30b28a5538SAdam Hornacek     /**
3117deb9edSVladimir Kotal      * Encapsulates the result of LDAP search, namely single object's
3217deb9edSVladimir Kotal      * DN and attributes.
3317deb9edSVladimir Kotal      */
3417deb9edSVladimir Kotal     public static class LdapSearchResult<T> {
35*c6f0939bSAdam Hornacek         private final String dn;
36*c6f0939bSAdam Hornacek         private final T attrs;
3717deb9edSVladimir Kotal 
LdapSearchResult(String dn, T attrs)383c16dad8SVladimir Kotal         public LdapSearchResult(String dn, T attrs) {
39866b60ddSVladimir Kotal             this.dn = dn;
4017deb9edSVladimir Kotal             this.attrs = attrs;
4117deb9edSVladimir Kotal         }
4217deb9edSVladimir Kotal 
getDN()4317deb9edSVladimir Kotal         public String getDN() {
44866b60ddSVladimir Kotal             return dn;
4517deb9edSVladimir Kotal         }
4617deb9edSVladimir Kotal 
getAttrs()4717deb9edSVladimir Kotal         public T getAttrs() {
4817deb9edSVladimir Kotal             return attrs;
4917deb9edSVladimir Kotal         }
5017deb9edSVladimir Kotal     }
5117deb9edSVladimir Kotal 
5217deb9edSVladimir Kotal     /**
530e7ff20bSVladimir Kotal      * Perform LDAP lookup.
54b28a5538SAdam Hornacek      *
5553c33ae5SVladimir Kotal      * @param dn LDAP DN
56b28a5538SAdam Hornacek      * @return set of attributes for the user or null
57750d880bSVladimir Kotal      * @throws LdapException LDAP exception
58b28a5538SAdam Hornacek      *
5953c33ae5SVladimir Kotal      * @see #lookupLdapContent(java.lang.String, java.lang.String)
60b28a5538SAdam Hornacek      */
lookupLdapContent(String dn)6117deb9edSVladimir Kotal     public LdapSearchResult<Map<String, Set<String>>> lookupLdapContent(String dn) throws LdapException {
6253c33ae5SVladimir Kotal         return lookupLdapContent(dn, (String) null);
63b28a5538SAdam Hornacek     }
64b28a5538SAdam Hornacek 
65b28a5538SAdam Hornacek     /**
660e7ff20bSVladimir Kotal      * Perform LDAP lookup.
67b28a5538SAdam Hornacek      *
6853c33ae5SVladimir Kotal      * @param dn LDAP DN
69b28a5538SAdam Hornacek      * @param filter the LDAP filter
70b28a5538SAdam Hornacek      * @return set of attributes for the user or null
71750d880bSVladimir Kotal      * @throws LdapException LDAP exception
72b28a5538SAdam Hornacek      *
7353c33ae5SVladimir Kotal      * @see #lookupLdapContent(java.lang.String, java.lang.String, java.lang.String[])
74b28a5538SAdam Hornacek      */
lookupLdapContent(String dn, String filter)7517deb9edSVladimir Kotal     public LdapSearchResult<Map<String, Set<String>>> lookupLdapContent(String dn, String filter) throws LdapException {
7653c33ae5SVladimir Kotal         return lookupLdapContent(dn, filter, null);
77b28a5538SAdam Hornacek     }
78b28a5538SAdam Hornacek 
79b28a5538SAdam Hornacek     /**
800e7ff20bSVladimir Kotal      * Perform LDAP lookup.
81b28a5538SAdam Hornacek      *
8253c33ae5SVladimir Kotal      * @param dn LDAP DN
83b28a5538SAdam Hornacek      * @param values match these LDAP value
84b28a5538SAdam Hornacek      * @return set of attributes for the user or null
85750d880bSVladimir Kotal      * @throws LdapException LDAP exception
86b28a5538SAdam Hornacek      *
8753c33ae5SVladimir Kotal      * @see #lookupLdapContent(java.lang.String, java.lang.String, java.lang.String[])
88b28a5538SAdam Hornacek      */
lookupLdapContent(String dn, String[] values)8917deb9edSVladimir Kotal     public LdapSearchResult<Map<String, Set<String>>> lookupLdapContent(String dn, String[] values) throws LdapException {
9053c33ae5SVladimir Kotal         return lookupLdapContent(dn, null, values);
91b28a5538SAdam Hornacek     }
92b28a5538SAdam Hornacek 
93b28a5538SAdam Hornacek     /**
940e7ff20bSVladimir Kotal      * Perform LDAP lookup.
95b28a5538SAdam Hornacek      *
9653c33ae5SVladimir Kotal      * @param dn LDAP DN
97b28a5538SAdam Hornacek      * @param filter the LDAP filter
98b28a5538SAdam Hornacek      * @param values match these LDAP value
99b28a5538SAdam Hornacek      * @return set of attributes for the user or null
100750d880bSVladimir Kotal      * @throws LdapException LDAP exception
101b28a5538SAdam Hornacek      */
lookupLdapContent(String dn, String filter, String[] values)10217deb9edSVladimir Kotal     public abstract LdapSearchResult<Map<String, Set<String>>> lookupLdapContent(String dn, String filter, String[] values) throws LdapException;
103b28a5538SAdam Hornacek 
104b28a5538SAdam Hornacek     /**
105b28a5538SAdam Hornacek      * @return if the provider is correctly configured
106b28a5538SAdam Hornacek      */
isConfigured()107b28a5538SAdam Hornacek     public abstract boolean isConfigured();
108b28a5538SAdam Hornacek 
109b28a5538SAdam Hornacek     /**
110b28a5538SAdam Hornacek      * Closes the LDAP provider.
111b28a5538SAdam Hornacek      */
close()112b28a5538SAdam Hornacek     public abstract void close();
113b28a5538SAdam Hornacek }
114