summaryrefslogtreecommitdiff
path: root/docs/ldap-authentication.markdown
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-08-29 20:00:53 -0400
committerFrederic Guillot <fred@kanboard.net>2015-08-29 20:00:53 -0400
commit6c711f696f73bc59813f6834ec241aef3b626cbd (patch)
treeded4f0e8c7f8c672414ff3f2f84eac0f6d9073e5 /docs/ldap-authentication.markdown
parentef087f5e22df1a0d97babef26aaf9b8960ee6d5d (diff)
Include documentation in the application
Diffstat (limited to 'docs/ldap-authentication.markdown')
-rw-r--r--docs/ldap-authentication.markdown234
1 files changed, 0 insertions, 234 deletions
diff --git a/docs/ldap-authentication.markdown b/docs/ldap-authentication.markdown
deleted file mode 100644
index 53b3d012..00000000
--- a/docs/ldap-authentication.markdown
+++ /dev/null
@@ -1,234 +0,0 @@
-LDAP authentication
-===================
-
-Requirements
-------------
-
-- LDAP extension for PHP
-- 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
-- By default, all LDAP users have no admin privileges
-- To become administrator, a LDAP user must be promoted by another administrator
-
-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 is 3 possible ways to browse the LDAP directory:
-
-#### Anonymous browsing
-
-```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 user
-
-A specific user is used to browse the LDAP directory.
-By example, Novell eDirectory use that method.
-
-```php
-define('LDAP_BIND_TYPE', 'proxy');
-define('LDAP_USERNAME', 'my proxy user');
-define('LDAP_PASSWORD', 'my proxy password');
-```
-
-#### User credentials
-
-This method use 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@mydomain.local');
-define('LDAP_PASSWORD', null);
-```
-
-Here, the `LDAP_USERNAME` is use to define a replacement pattern:
-
-```php
-define('LDAP_USERNAME', '%s@mydomain.local');
-
-// Another way to do the same:
-
-define('LDAP_USERNAME', 'MYDOMAIN\\%s');
-```
-
-### Example for Microsoft Active Directory
-
-Let's say we have a domain `KANBOARD` (kanboard.local) and the primary controller is `myserver.kanboard.local`.
-Microsoft Active Directory doesn't allow anonymous binding by default.
-
-First example with a proxy user:
-
-```php
-<?php
-
-// Enable LDAP authentication (false by default)
-define('LDAP_AUTH', true);
-
-// Credentials to be allowed to browse the LDAP directory
-define('LDAP_BIND_TYPE', 'proxy');
-define('LDAP_USERNAME', 'administrator@kanboard.local');
-define('LDAP_PASSWORD', 'my super secret password');
-
-// LDAP server hostname
-define('LDAP_SERVER', 'myserver.kanboard.local');
-
-// LDAP properties
-define('LDAP_ACCOUNT_BASE', 'CN=Users,DC=kanboard,DC=local');
-define('LDAP_USER_PATTERN', '(&(objectClass=user)(sAMAccountName=%s))');
-define('LDAP_ACCOUNT_FULLNAME', 'displayname');
-define('LDAP_ACCOUNT_EMAIL', 'mail');
-```
-
-Another way with no proxy user:
-
-```php
-<?php
-
-// Enable LDAP authentication (false by default)
-define('LDAP_AUTH', true);
-
-// Credentials to be allowed to browse the LDAP directory
-define('LDAP_BIND_TYPE', 'user');
-define('LDAP_USERNAME', '%s@kanboard.local'); // or 'KANBOARD\\%s'
-define('LDAP_PASSWORD', null);
-
-// LDAP server hostname
-define('LDAP_SERVER', 'myserver.kanboard.local');
-
-// LDAP properties
-define('LDAP_ACCOUNT_BASE', 'CN=Users,DC=kanboard,DC=local');
-define('LDAP_USER_PATTERN', '(&(objectClass=user)(sAMAccountName=%s))');
-define('LDAP_ACCOUNT_FULLNAME', 'displayname');
-define('LDAP_ACCOUNT_EMAIL', 'mail');
-```
-
-### Example for OpenLDAP
-
-Our LDAP server is `myserver.example.com` and all users are stored in the hierarchy `ou=People,dc=example,dc=com`.
-
-For this example with use the anonymous binding.
-
-```php
-<?php
-
-// Enable LDAP authentication (false by default)
-define('LDAP_AUTH', true);
-
-// LDAP server hostname
-define('LDAP_SERVER', 'myserver.example.com');
-
-// LDAP properties
-define('LDAP_ACCOUNT_BASE', 'ou=People,dc=example,dc=com');
-define('LDAP_USER_PATTERN', 'uid=%s');
-define('LDAP_ACCOUNT_FULLNAME', 'displayname');
-define('LDAP_ACCOUNT_EMAIL', 'mail');
-```
-
-The `%s` is replaced by the username for the parameter `LDAP_USER_PATTERN`, so you can define a custom Distinguished Name (example: ` (&(objectClass=user)(uid=%s)(!(ou:dn::=trainees)))`).
-
-### Disable automatic account creation
-
-By default, Kanboard will create automatically a user account if nothing is found.
-
-You can disable this behavior if you prefer to create user accounts manually to restrict Kanboard to only some people.
-
-Just change the value of `LDAP_ACCOUNT_CREATION` to `false`:
-
-```php
-// Automatically create user account
-define('LDAP_ACCOUNT_CREATION', false);
-```
-
-### SELinux on RHEL-based like CentOS
-
-If SELinux is enabled, you have to allow Apache to reach out your LDAP server.
-
-- You can switch SELinux to the permissive mode or disable it (not recomemnded)
-- You can allow all network connections, by example `setsebool -P httpd_can_network_connect=1` or have a more restrictive rule
-
-In any case, refer to the official Redhat/Centos documentation.
-
-### Available configuration parameters
-
-```php
-// Enable LDAP authentication (false by default)
-define('LDAP_AUTH', false);
-
-// LDAP server hostname
-define('LDAP_SERVER', '');
-
-// LDAP server port (389 by default)
-define('LDAP_PORT', 389);
-
-// By default, require certificate to be verified for ldaps:// style URL. Set to false to skip the verification.
-define('LDAP_SSL_VERIFY', true);
-
-// Enable LDAP START_TLS
-define('LDAP_START_TLS', false);
-
-// LDAP bind type: "anonymous", "user" (use the given user/password from the form) and "proxy" (a specific user to browse the LDAP directory)
-define('LDAP_BIND_TYPE', 'anonymous');
-
-// LDAP username to connect with. null for anonymous bind (by default).
-// Or for user bind type, you can use a pattern like that %s@kanboard.local
-define('LDAP_USERNAME', null);
-
-// LDAP password to connect with. null for anonymous bind (by default).
-define('LDAP_PASSWORD', null);
-
-// LDAP account base, i.e. root of all user account
-// Example: ou=People,dc=example,dc=com
-define('LDAP_ACCOUNT_BASE', '');
-
-// LDAP query pattern to use when searching for a user account
-// Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))'
-// Example for OpenLDAP: 'uid=%s'
-define('LDAP_USER_PATTERN', '');
-
-// Name of an attribute of the user account object which should be used as the full name of the user.
-define('LDAP_ACCOUNT_FULLNAME', 'displayname');
-
-// Name of an attribute of the user account object which should be used as the email of the user.
-define('LDAP_ACCOUNT_EMAIL', 'mail');
-
-// Name of an attribute of the user account object which should be used as the id of the user.
-// Example for ActiveDirectory: 'samaccountname'
-// Example for OpenLDAP: 'uid'
-define('LDAP_ACCOUNT_ID', 'samaccountname');
-
-// By default Kanboard lowercase the ldap username to avoid duplicate users (the database is case sensitive)
-// Set to true if you want to preserve the case
-define('LDAP_USERNAME_CASE_SENSITIVE', false);
-
-// Automatically create user account
-define('LDAP_ACCOUNT_CREATION', true);
-```