Package org.nuxeo.ecm.directory.ldap
Class LDAPSession
java.lang.Object
org.nuxeo.ecm.directory.BaseSession
org.nuxeo.ecm.directory.ldap.LDAPSession
- All Implemented Interfaces:
AutoCloseable,EntrySource,Session
This class represents a session against an LDAPDirectory.
- Author:
- Olivier Grisel
-
Nested Class Summary
Nested classes/interfaces inherited from class org.nuxeo.ecm.directory.BaseSession
BaseSession.FieldDetector -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected DirContextprotected final Stringprotected final Stringprotected static final Stringprotected static final Stringprotected final Stringprotected final Stringprotected final Stringprotected final StringFields inherited from class org.nuxeo.ecm.directory.BaseSession
autoincrementId, computeMultiTenantId, directory, directoryName, MULTI_TENANT_ID_FORMAT, permissions, POWER_USERS_GROUP, readAllColumns, READONLY_ENTRY_FLAG, referenceClass, schemaName, substringMatchType, TENANT_ID_FIELD -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanauthenticate(String username, String password) Checks that the credentials provided by the UserManager match those registered in the directory.protected StringchangeEntryIdCase(String id, String idFieldCase) voidclose()Closes the session and all open result sets obtained from this session.createEntry(DocumentModel entry) Creates an entry in a directory.protected DocumentModelcreateEntryWithoutReferences(Map<String, Object> fieldMap) Creates an entry to the directory without creating its references.protected DocumentModeldoCreateEntryWithoutReferences(Map<String, Object> fieldMap) To be implemented for specific creation.voiddoDeleteEntryWithoutReferences(String entryId) To be implemented for specific deletion.protected DocumentModelListdoQuery(DirectoryQueryBuilder queryBuilder) To be implemented for specific querying.doQueryIds(DirectoryQueryBuilder queryBuilder) To be implemented for specific querying.doUpdateEntryWithoutReferences(DocumentModel docModel) To be implemented for specific update.protected DocumentModelfieldMapToDocumentModel(Map<String, Object> fieldMap) protected AttributegetAttributeValue(String fieldName, Object value) To be implemented with a more specific return type.getEntryFromSource(String idOrSysId, boolean fetchReferences) protected ObjectgetFieldValue(Attribute attribute, String fieldName, String entryId, boolean fetchReferences) protected SearchResultgetLdapEntry(String id) protected SearchResultgetLdapEntry(String id, boolean fetchAllAttributes) getMandatoryAttributes(Attribute objectClassesAttribute) protected voidhandleException(Exception e, String message) booleanReturns true if session has an entry with given id.booleanTells whether the directory implementation can be used as an authenticating backend for the UserManager (based on login / password check).protected DocumentModelListldapResultsToDocumentModels(NamingEnumeration<SearchResult> results, boolean fetchReferences) protected DocumentModelldapResultToDocumentModel(SearchResult result, String entryId, boolean fetchReferences) query(Map<String, Serializable> filter, Set<String> fulltext, Map<String, String> orderBy, boolean fetchReferences, int limit, int offset) Executes a query with the possibility to fetch a subset of the results. org.nuxeo.ecm.directory.BaseSession provides a default implementation fetching all results to return the subset.booleantoString()Methods inherited from class org.nuxeo.ecm.directory.BaseSession
addTenantId, applyQueryLimits, applyQueryLimits, canDeleteMultiTenantEntry, canDeleteMultiTenantEntry, checkDeleteConstraints, checkPermission, computeMultiTenantDirectoryId, createEntry, createEntryModel, createEntryModel, createEntryModel, createEntryModel, createEntryModel, createEntryModel, createQueryBuilderForIds, createQueryBuilderWithConfiguredFiltering, createQueryBuilderWithConfiguredFiltering, deleteEntry, deleteEntry, deleteEntryWithoutReferences, getCurrentTenantId, getEntry, getIdField, getPasswordField, getPrefixedFieldName, getPrefixedIdField, getProjection, getProjection, hasPermission, hasPermission, isMultiTenant, isReadOnly, isReadOnlyEntry, query, query, query, query, query, query, queryIds, setReadAllColumns, setReadOnlyEntry, setReadWriteEntry, toStringList, updateEntry, updateEntryWithoutReferencesMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.nuxeo.ecm.directory.Session
createEntryModel, getEntry
-
Field Details
-
MISSING_ID_LOWER_CASE
- See Also:
-
MISSING_ID_UPPER_CASE
- See Also:
-
dirContext
-
idAttribute
-
idCase
-
searchBaseDn
-
emptySet
-
rdnAttribute
-
rdnField
-
passwordHashAlgorithm
-
-
Constructor Details
-
LDAPSession
-
-
Method Details
-
getDirectory
Description copied from class:BaseSessionTo be implemented with a more specific return type.- Specified by:
getDirectoryin classBaseSession
-
getContext
-
createEntryWithoutReferences
Description copied from class:BaseSessionCreates an entry to the directory without creating its references.- Overrides:
createEntryWithoutReferencesin classBaseSession- Implementation Note:
- Do not execute generic code because LDAP directory does not handle in the same way the id, and it does not seem to support multi tenancy
-
doCreateEntryWithoutReferences
Description copied from class:BaseSessionTo be implemented for specific creation.- Overrides:
doCreateEntryWithoutReferencesin classBaseSession
-
doUpdateEntryWithoutReferences
Description copied from class:BaseSessionTo be implemented for specific update.- Overrides:
doUpdateEntryWithoutReferencesin classBaseSession
-
doDeleteEntryWithoutReferences
Description copied from class:BaseSessionTo be implemented for specific deletion.- Overrides:
doDeleteEntryWithoutReferencesin classBaseSession
-
hasEntry
Description copied from interface:SessionReturns true if session has an entry with given id.- Specified by:
hasEntryin interfaceSession- Overrides:
hasEntryin classBaseSession
-
getLdapEntry
- Throws:
NamingException
-
getLdapEntry
- Throws:
NamingException
-
handleException
-
getEntryFromSource
- Specified by:
getEntryFromSourcein interfaceEntrySource- Overrides:
getEntryFromSourcein classBaseSession
-
query
public DocumentModelList query(Map<String, Serializable> filter, Set<String> fulltext, Map<String, String> orderBy, boolean fetchReferences, int limit, int offset) Description copied from interface:SessionExecutes a query with the possibility to fetch a subset of the results. org.nuxeo.ecm.directory.BaseSession provides a default implementation fetching all results to return the subset. Not recommended.- Parameters:
limit- maximum number of results ignored if less than 1offset- number of rows skipped before starting, will be 0 if less than 0.- See Also:
-
doQuery
Description copied from class:BaseSessionTo be implemented for specific querying.- Overrides:
doQueryin classBaseSession- See Also:
-
doQueryIds
Description copied from class:BaseSessionTo be implemented for specific querying.- Overrides:
doQueryIdsin classBaseSession- See Also:
-
close
public void close()Description copied from interface:SessionCloses the session and all open result sets obtained from this session.Releases this Connection object's resources immediately instead of waiting for them to be automatically released.
TODO: should this operation auto-commit pending changes?
-
fieldMapToDocumentModel
-
getFieldValue
-
getAttributeValue
-
ldapResultsToDocumentModels
protected DocumentModelList ldapResultsToDocumentModels(NamingEnumeration<SearchResult> results, boolean fetchReferences) throws NamingException - Throws:
NamingException
-
ldapResultToDocumentModel
protected DocumentModel ldapResultToDocumentModel(SearchResult result, String entryId, boolean fetchReferences) throws NamingException - Throws:
NamingException
-
changeEntryIdCase
-
authenticate
Description copied from interface:SessionChecks that the credentials provided by the UserManager match those registered in the directory. If username is not in the directory, this should return false instead of throrwing an exception.- Returns:
- true is the credentials match those stored in the directory
-
isAuthenticating
public boolean isAuthenticating()Description copied from interface:SessionTells whether the directory implementation can be used as an authenticating backend for the UserManager (based on login / password check).- Specified by:
isAuthenticatingin interfaceSession- Overrides:
isAuthenticatingin classBaseSession- Returns:
- true is the directory is authentication aware
-
rdnMatchesIdField
public boolean rdnMatchesIdField() -
getMandatoryAttributes
-
getMandatoryAttributes
-
toString
-
createEntry
Description copied from interface:SessionCreates an entry in a directory.- Specified by:
createEntryin interfaceSession- Overrides:
createEntryin classBaseSession- Parameters:
entry- the document model representing the entry to create- Returns:
- The new entry created in the directory
-