While the cloudstack documentation is excellent in regards to setting up LDAP/AD authentication I felt that it left out some very basic but important steps. This should hopefully fill in the gaps.
If you take a look at the cloustack documentation LDAP section you will notice various API calls. I initially thought that you somehow had to somehow attach this API call to each user in order to let them authenticate with the password stored in AD/LDAP. Instead, the API call actually configures the management service so LDAP authentication would work, must like other products that have integrated LDAP auth.
Enabling port 8096
All the LDAP examples in the documentation query the API on port 8096, you will find that this will not work out of the box. (This is the port to access the API without authentication as explained here.)
- Goto your cloudstack management interface
- Global Settings
- set integration.api.port to 8096
- restart cloud-management service
- Test connection to api
Disabling MD5 hash
This is a workaround for bug CS-14680 you cannot authenticate to AD/LDAP without disabling this.
You need to change the file called /usr/share/cloud/management/webapps/client/scripts/sharedFunctions.js
Restart management services
- service cloud-management restart
If you need to support both LDAP auth and the internal MySQL database there is also a recommended patch in CS-16325.