Generated Documentation for Controls Injector

An extension that allows to inject controls to incoming requests.

Supported controls and their OIDs:

The list above is provided because you may have to add ACI rules to allow for the control to be used. For example:

(targetcontrol="1.3.6.1.4.1.4203.1.10.2")(version 3.0; acl "allow use of NoOp control on own entry"; allow(read) userdn="ldap:///self";)

To create a plugin:

dsconfig create-plugin 
    --plugin-name noop-injector 
    --type third-party 
    --set enabled:false 
    --set plugin-type:preparseabandon 
    --set plugin-type:preparseadd 
    --set plugin-type:preparsebind 
    --set plugin-type:preparsecompare 
    --set plugin-type:preparsedelete 
    --set plugin-type:preparseextended 
    --set plugin-type:preparsemodify 
    --set plugin-type:preparsemodifydn 
    --set plugin-type:preparsesearch 
    --set plugin-type:preparseunbind 
    --set extension-class:com.pingidentity.ds.plugin.ControlsInjector 
    --set extension-argument:request-control=NoOp 
    --set request-criteria:the-request-criteria-name

To retrieve monitoring information, search cn=monitor like:

ldapsearch -b cn=monitor '(objectClass=ds-monitor-controls-injector)'
dn: cn=noop-injector-monitor [from ThirdPartyPlugin:noop-injector],cn=monitor
objectClass: top
objectClass: ds-monitor-entry
objectClass: ds-monitor-controls-injector
objectClass: extensibleObject
cn: noop-injector-monitor [from ThirdPartyPlugin:noop-injector]
ds-extension-monitor-name: noop-injector-monitor
ds-extension-type: ThirdPartyPlugin
ds-extension-name: noop-injector
processed-add: 0
processed-modify: 0
processed-compare: 0
processed-search: 0
processed-sasl-bind: 0
processed-abandon: 0
processed-unbind: 0
processed-simple-bind: 0
processed-extended: 0
processed-moddn: 0

This example plugin would inject the NoOp control, as illustrated below:

ldapmodify
dn: uid=user.7,ou=People,dc=example,dc=com
changetype: modify
replace: description
description: controls injector test 4

# Modifying entry uid=user.7,ou=People,dc=example,dc=com ...
# Result Code:  16654 (no operation)
# Diagnostic Message:  The modify operation was not actually performed in the Directory Server backend because the LDAP no-op control was present in the request

NOTE: you probably should never use this plugin without a request criteria.

Allowed Arguments

Argument Name: request-control
Description: The name of a supported request control. Currently supported controls list:
  • AdministrativeOperation
  • DontUseCopy
  • ExtendedSchemaInfo
  • HardDelete
  • IgnoreNoUserModification
  • ManageDsaIT
  • NameWithEntryUUID
  • NoOp
  • PermissiveModify
  • RealAttributesOnly
  • ReplicationRepair
  • RetainIdentity
  • ReturnConflictEntries
  • Subentries
  • SubtreeDelete
  • SuppressReferentialIntegrityUpdates
  • Undelete
  • VirtualAttributesOnly
Data Type: String
Is Required: true
Maximum Occurrences: 1