Managing LDAP Resources

Edge for Private Cloud v4.18.01

When using the LDAP policy for authentication or DN queries (http://apigee.com/docs/api-services/content/ldap-policy), the policy uses an Apigee-side LDAP resource that contains the connection details to your LDAP provider. This section describes how to create and manage LDAP resources via an API.

Create an LDAP resource

Following is the API for creating an LDAP resource:

/v1/organizations/{org_name}/environments/{environment}/ldapresources

Following is an annotated XML payload that describes the LDAP resource configuration you’ll send to create the resource:

<LdapResource name="ldap1">
  <Connection>
    <Hosts> 
      <Host port="636">foo.com</Host> <!-- port is optional: defaults to 389 for ldap:// and 636 for ldaps:// -->
    </Hosts>
    <SSLEnabled>false</SSLEnabled> <!-- optional, defaults to false -->
    <Version>3</Version> <!-- optional, defaults to 3-->
    <Authentication>simple</Authentication> <!-- optional, only simple supported -->
    <ConnectionProvider>jndi|unboundid</ConnectionProvider> <!-- required -->
    <ServerSetType>single|round robin|failover</ServerSetType> <!-- not applicable for jndi -->
    <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> <!-- If using a custom LDAP provider, the fully qualified class -->
  </Connection>
  <ConnectPool enabled="true"> <!-- enabled is optional, defaults to true -->
    <Timeout>30000</Timeout> <!-- optional, in milliseconds; if not set, no timeout -->
    <Maxsize>50</Maxsize> <!-- optional; if not set, no max connections -->
    <Prefsize>30</Prefsize> <!-- optional; if not set, no pref size -->
    <Initsize></Initsize> <!-- optional; if not set, defaults to 1 -->
    <Protocol></Protocol> <!-- optional; if not set, defaults to 'ssl plain' -->
  </ConnectPool>
  <Admin>
    <DN>cn=admin,dc=apigee,dc=com</DN>
    <Password>secret</Password>
  </Admin>
</LdapResource>

Example

The following example creates an LDAP resource named ldap1:

curl -X POST -H "Content-Type: application/xml" \
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \
-u {apigee_email}:{password} -d \
'<LdapResource name="ldap1">
  <Connection>
    <Hosts> 
      <Host>foo.com</Host>
    </Hosts>
    <SSLEnabled>false</SSLEnabled>
    <Version>3</Version> 
    <Authentication>simple</Authentication> 
    <ConnectionProvider>unboundid</ConnectionProvider>
    <ServerSetType>round robin</ServerSetType>
  </Connection>
  <ConnectPool enabled="true"> 
    <Timeout>30000</Timeout> 
    <Maxsize>50</Maxsize> 
    <Prefsize>30</Prefsize> 
    <Initsize></Initsize> 
    <Protocol></Protocol> 
  </ConnectPool>
  <Admin>
    <DN>cn=admin,dc=apigee,dc=com</DN>
    <Password>secret</Password>
  </Admin>
</LdapResource>'

List all LDAP Resources

curl https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \
-u {apigee_email}:{password}

Get the Details of an LDAP Resource

curl https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources/ldap1 \
-u {apigee_email}:{password}

Update an LDAP resource

curl -X POST -H "Content-Type: application/xml" \
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources/ldap1 \
-u {apigee_email}:{password} -d \
'<LdapResource name="ldap1">
  <Connection>
    <Hosts> 
      <Host>foo.com</Host>
    </Hosts>
    <SSLEnabled>false</SSLEnabled>
    <Version>3</Version> 
    <Authentication>simple</Authentication> 
    <ConnectionProvider>unboundid</ConnectionProvider>
    <ServerSetType>round robin</ServerSetType>
  </Connection>
  <ConnectPool enabled="true"> 
    <Timeout>50000</Timeout> 
    <Maxsize>50</Maxsize> 
    <Prefsize>30</Prefsize> 
    <Initsize></Initsize> 
    <Protocol></Protocol> 
  </ConnectPool>
  <Admin>
    <DN>cn=admin,dc=apigee,dc=com</DN>
    <Password>secret</Password>
  </Admin>
</LdapResource>'

Delete an LDAP Resource

curl -X DELETE \
https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources/ldap1 \
-u {apigee_email}:{password}