Skip to content

UX: filter internal/operational object classes from LDAP schema display #434

@JayVDZ

Description

@JayVDZ

Summary

When discovering schema from OpenLDAP (and other RFC-compliant directories), the schema tab displays all structural object classes from the subschema — including internal/operational ones that administrators would never want to manage. This creates noise in the UI.

Examples of internal classes that appear but are never useful for identity management:

  • olc* classes (OpenLDAP cn=config backend configuration: olcGlobal, olcDatabaseConfig, olcMdbConfig, etc.)
  • audit* classes (accesslog overlay: auditAdd, auditBind, auditModify, etc.)
  • Legacy/obsolete classes (pilotPerson, pilotDSA, pilotOrganization)

AD avoids this problem via defaultHidingValue=FALSE in its schema filter, which hides most internal classes. OpenLDAP has no equivalent mechanism.

Proposed Solution

Add optional filtering in the RFC 4512 schema discovery path to exclude known-internal object class prefixes. This could be:

  1. A hardcoded exclude list of known-internal prefixes (olc, audit) — simple but brittle
  2. A connector setting (e.g., "Object class exclude patterns") where admins can specify prefixes/patterns to filter — more flexible
  3. UI-side grouping/filtering — show all classes but group them with collapsible sections (e.g., "OpenLDAP Internal", "Accesslog", "Standard") so the useful ones are prominent

Option 2 or 3 is preferred for flexibility. The current behaviour is correct (all classes are discoverable), just noisy.

Context

Discovered during #72 Phase 5 (OpenLDAP end-to-end validation). The Yellowstone OpenLDAP connected system shows 65 object types, of which ~15 are actually useful for identity management. See screenshot in issue discussion.

Files

  • src/JIM.Connectors/LDAP/LdapConnectorSchema.csGetRfcSchemaAsync() method

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions