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