LDAP authentication =================== Requirements ------------ - PHP LDAP extension enabled - LDAP server: - OpenLDAP - Microsoft Active Directory - Novell eDirectory Workflow -------- When the LDAP authentication is activated, the login process work like that: 1. Try first to authenticate the user by using the database 2. If the user is not found inside the database, a LDAP authentication is performed 3. If the LDAP authentication is successful, by default a local user is created automatically with no password and marked as LDAP user. ### Differences between a local user and a LDAP user are the following: - LDAP users have no local passwords - LDAP users can't modify their password with the user interface The full name and the email address are automatically fetched from the LDAP server. Configuration ------------- You have to create a custom config file named `config.php` (you can also use the template `config.default.php`). This file must be stored in the root directory of Kanboard. ### LDAP bind type There are 3 possible ways to browse the LDAP directory: #### Anonymous mode ```php define('LDAP_BIND_TYPE', 'anonymous'); define('LDAP_USERNAME', null); define('LDAP_PASSWORD', null); ``` This is the default value but some LDAP servers don't allow that. #### Proxy mode A specific user is used to browse the LDAP directory: ```php define('LDAP_BIND_TYPE', 'proxy'); define('LDAP_USERNAME', 'my proxy user'); define('LDAP_PASSWORD', 'my proxy password'); ``` #### User mode This method uses the credentials provided by the end-user. By example, Microsoft Active Directory doesn't allow anonymous browsing by default and if you don't want to use a proxy user you can use this method. ```php define('LDAP_BIND_TYPE', 'user'); define('LDAP_USERNAME', '%s@kanboard.local'); define('LDAP_PASSWORD', null); ``` In this case, the constant `LDAP_USERNAME` is used as a pattern to the ldap username, examples: - `%s@kanboard.local` will be replaced by `my_user@kanboard.local` - `KANBOARD\\%s` will be replaced by `KANBOARD\my_user` ### Example for Microsoft Active Directory Let's say we have a domain `KANBOARD` (kanboard.local) and the primary controller is `myserver.kanboard.local`. First example with proxy mode: ```php