DokuWiki.ru

простой и мощный вики-движок

Инструменты пользователя

Инструменты сайта


auth:ad

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия Следующая версия справа и слева
auth:ad [2016/12/26 15:36]
82.207.23.25 [Изменение профиля пользователя и пароля]
auth:ad [2017/03/14 21:00]
5.228.3.150
Строка 1: Строка 1:
-====== Аутентификация через Active Directory ====== +Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.  
- +  
-Это [[doku>auth| серверное расширение (backend)]] позволяет проводить аутентификацию пользователей с помощью Active Directory. +Именно для этого мы и набираем удалённых сотрудниковкоторые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.  
- +  
-Аутентификация Active Directory может быть настроена через аутентификацию [[doku>​auth:​LDAP]],​ однако это сделать гораздо проще с помощью специально созданного расширения DokuWIki. Для взаимодействия с AD в DokuWiki используется отличная [[http://​adldap.sourceforge.net/​|библиотека adLDAP]], которая основана на работе [[http://​www.nosq.com/​blog/​2005/​08/​ldap-activedirectory-and-dokuwiki/​|James Van Lommel]]. Эта библиотека включена в установку DokuWikiтак что нет необходимости её отдельно загружать и устанавливать. И ко всему прочему эта библиотека позволяет использовать простую (Single-Sign-On) авторизацию NTLM и Kerberos. Для начала настройки необходимо включить предустановленный плагин+Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк 
- +  
-Серверное расширение включено в дистрибутив DokuWiki начиная с версии rc2009-12-02 "Mulled Wine"+Вам достаточно просто зарегистрироваться на нашем сервисе. > www.like-rabota.tk <  
- +  
-Также будет необходимо включить поддержку LDAP на PHP сервере. По умолчанию PHP не поддерживает LDAP. В большинстве случаев нужно просто отредактировать php.ini   +Вывод заработанных средств ежедневно в течении нескольких минут.
-чтобы включить поддержку LDAP, однако надо проверить установку PHP, если на вашем сервере установлена нестандартная сборка PHP. +
- +
-===== Настройка ===== +
- +
-Во избежании потери данных при перезаписи их менеджером настройки рекомендуется все настройки производить в файле  ''conf/local.protected.php''+
- +
-Возможно потребуется установить как минимум следующие опции: +
- +
-<code php> +
- <?php +
-  // общие настройки DokuWiki +
-  $conf['useacl'        = 1; +
-  $conf['disableactions'] = 'register'; +
-  $conf['authtype'      = 'ad'; +
- +
-  // настройки Active Directory +
-  $conf['auth']['ad']['account_suffix'    = '@my.domain.org'; +
-  $conf['auth']['ad']['base_dn'           = 'DC=my,DC=domain,DC=org'; +
-  $conf['auth']['ad']['domain_controllers'] = 'srv1.domain.org, srv2.domain.org'; //через запятую можно перечислить  +
-                                                                                  //несколько контроллеров домена +
-</code> +
- +
-Можно указать дополнительные параметры: +
- +
-<code php> +
-  $conf['auth']['ad']['ad_username'       = 'root'; +
-  $conf['auth']['ad']['ad_password'       = 'pass'; +
-  $conf['auth']['ad']['sso'               = 1; +
-  $conf['auth']['ad']['real_primarygroup' = 1; +
-  $conf['auth']['ad']['use_ssl'           = 1; +
-  $conf['auth']['ad']['use_tls'           = 1; +
-  $conf['auth']['ad']['debug'             = 1; +
-  $conf['auth']['ad']['recursive_groups'  = 1; // Если в AD содержится много групп, переключение этого параметра  +
-                                                 // в 0 улучшит скорость работыно неявное членство в группах перестанет работать +
-</code> +
- +
-''ad_username'' и ''ad_password'' необходимы для реализации подписки на изменения. Этот аккаунт используется для запроса информации о пользователе из AD. +
- +
-Для установки прав суперпользователя можно использовать следующую конструкцию: +
- +
-<code php> +
-$conf['manager'  = '@LDAPGROUPNAME'; +
-$conf['superuser'] = '@LDAPGROUPNAME'; +
-</code> +
- +
-Любые другие настройки, указанные в $conf['auth']['ad'], напрямую передаются в библиотеку adldap. Детальное описание этих настроек можно получить в  [[http://adldap.sourceforge.net/wiki/doku.php?id=api|документации по adLDAP]].  +
- +
-В комбинации с аутентификацией Single-Sign-On также можно добавить настройки домена Windows. То есть проводить аутентификацию на разных AD в зависимости от домена NTLM или Kerberos конкретного пользователя. Для этого надо использовать название домена (в нижнем регистре) как подключ в ''$conf['auth']['ad']''. Т.е. для того, чтобы идентифицировать всех пользователей, пришедших из  домена Windows ''Foobar'' через сервер AD, отличный от сервера по умолчанию, нужно добавить следующие строчки в конфигурационный файл: +
- +
-<code php> +
-$conf['auth']['ad']['foobar']['account_suffix'    = '@foobar.domain.org'; +
-$conf['auth']['ad']['foobar']['base_dn'           = 'DC=foobar,DC=domain,DC=org'; +
-$conf['auth']['ad']['foobar']['domain_controllers'] = 'otherad.domain.org'; +
-$conf['auth']['ad']['foobar']['ad_username'       = 'otherroot'; +
-$conf['auth']['ad']['foobar']['ad_password'       = 'otherpass'; +
-</code>   +
- +
-Если в организации используется система из нескольких контроллеров домена с единым родительским контроллером, может потребоваться указать порт 3268, вместо порта по умолчанию 389. В противном случае DokuWiki может не получить информации о группах пользователей дочернего домена. Самый простой способ сделать это - исправить исходники adLDAP.phpтак как все вызовы к ldap_connect содержат порт в качестве отдельного аргумента функции. +
-+
-===== Изменение профиля пользователя и пароля ===== +
- +
-[[doku>devel:develonly]] +
- +
-Пользователи могут изменить их настройки (имя, почтовый адрес и пароль) используя кнопку "Профиль". Это может потребовать выделения соответствующих привилегий для пользователя, от имени которого DokuWiki работает с AD (этот пользователь указан в настройках ''ad_username'' и ''ad_password''). При этом изменение пароля доступно только через SSL или TLS соединение. См. раздел [[http://adldap.sourceforge.net/wiki/doku.php?id=ldap_over_ssl|LDAP over SSL]] в документации на библиотеку adLDAP. +
- +
-Также необходимо помнить, что автоматически создаваемые DokuWiki пароли не удовлетворяют политикам безопасности, использованным по умолчанию в Active Directory. В таком случае либо исправьте соответствующие политики AD, либо выключите функцию "Напомнить пароль" в DokuWiki в настройках [[doku>config:disableactions]]. +
- +
-===== Имена пользователей и групп ===== +
- +
-Имена пользователей и групп при экспорте автоматически преобразуются в формат DokuWiki и могут отличаться от указанных на сервере Active Directory. Пробелы заменяются символом подчёркивания, а символы %%\%% и %%#%% удаляются. +
- +
-Пример: ''Domain Users'' станет ''Domain_Users'' в DokuWiki Если необходимо отредактировать файл с ACL вручную, нужно помнить, что правильная форма: ''Domain%5fUsers'' Где "%5f" символ подчёркивания+
- +
-Об этом необходимо помнить, указывая имена пользователей и групп при настройке прав доступа в DokuWiki. +
- +
-===== Включение Single Sign On ===== +
- +
-Single Sign On (SSO) обозначает, что DokuWiki будет использовать логин пользователя, под которым работает пользователь Windows без необходимости введения логина и пароля на сайте. Эта функция использует настройки сервера и читает значение из переменной окружения ''REMOTE_USER''. При этом подсистема аутентификации через AD в DokuWiki будет использовать это имя для получения дополнительной информации, например информации о том, к каким группа пользователей относится имя. +
- +
-Для того, чтобы эта функция заработала, необходимо включить настройку ''sso'' в ''local.protected.php'' и скорее всего настроить служебный аккаунт, добавив ему возможность получать информацию о пользователях AD: +
- +
-<code> +
-$conf['auth']['ad']['sso'] = 1; +
-$conf['auth']['ad']['ad_username'] = 'MyManager'; +
-$conf['auth']['ad']['ad_password'] = 'ManagerPass'; +
-</code> +
- +
-Также необходимо дополнительно установить дополнительные настройки на сервере и в браузере. +
- +
-==== Web Server ==== +
- +
-=== NTLM on IIS === +
- +
-First configure IIS to use the Windows Logon for authentication (see screenshots): +
- +
-  - Open the IIS configuration console using "Start" -> "Run" -> ''inetmgr'' +
-  - Right click on the "Default Web Site" entry and choose "Properties"  +
-  - Switch to the "Directory Security" tab +
-  - Click the "Edit" button on "Anonymous access and authentication control"+
-  - Disable "Anonymous access" +
-  - Enable "Integrated Windows Authentication" +
- +
- +
-{{http://www.dokuwiki.org/_media/auth:step1.jpg?330}} {{http://www.dokuwiki.org/_media/auth:step2.jpg?230}} {{http://www.dokuwiki.org/_media/auth:step3.jpg?170}} +
- +
-Then make sure NTLM is used as authentication protocol. This has to be done on the commandline: +
- +
-  - Open a command line: "Start" -> "Run" -> ''cmd'' +
-  - Change to the admin script directory: ''cd \Inetpub\Adminscripts'' +
-  - Check the current protocol: ''cscript adsutil.vbs get w3svc/NTAuthenticationProviders'' +
-  - if it doesn't say NTLM, set it: ''cscript adsutil.vbs set w3svc/NTAuthenticationProviders "NTLM"'' +
- +
-Now restart IIS. +
- +
-=== NTLM on Apache (Windows) === +
- +
-Download [[http://sourceforge.net/projects/mod-auth-sspi/]] +
-Copy the mod_auth_sspi.so file into your apache modules directory. +
-Add into httpd.conf: +
-<code> +
-LoadModule sspi_auth_module modules/mod_auth_sspi.so  +
- +
-<Directory "c:/wamp/www/"> +
-    AuthName "My Intranet" +
-    AuthType SSPI +
-    SSPIAuth On +
-    SSPIAuthoritative On +
- +
-    require valid-user +
- +
-</Directory> +
-</code> +
- +
-Now restart Apache +
- +
-=== NTLM on Apache (Linux) === +
- +
-== Ubuntu Server 11.04== +
-**Скачиваем модуль mod_ntlm для Apache.** +
- +
-<code>$ sudo wget http://modntlm.sourceforge.net/mod_ntlm2.tar.gz</code> +
- +
-**Распаковываем архив:** +
- +
-<code>$ tar -zxvf mod_ntlm2.tar.gz</code> +
- +
-**Необходимо обновить систему:** +
- +
-<code>$ sudo apt-get update</code> +
- +
-**Устанавливаем gcc:** +
- +
-<code>$ sudo apt-get install gcc</code> +
- +
-**Устанавливаем Apache prefork и gcc 3.4:** +
- +
-<code>$ sudo apt-get install apache2-prefork-dev gcc-3.4</code> +
- +
-**Линкуем компилятор gcc версии 3.4 с установленным в системе:** +
- +
-<code>$ ln -fs /usr/bin/gcc-3.4 /usr/bin/gcc</code> +
- +
-**Далее компилируем mod_ntlm.c** +
- +
-<code>$ sudo apxs2 -i -a -c mod_ntlm2/mod_ntlm.c</code> +
- +
-**Далее, в /etc/apache2/mods-available создать файл ntlm.load и добавить в него строку с загрузкой модуля:** +
- +
-LoadModule ntlm_module        /usr/lib/apache2/modules/mod_ntlm.so +
- +
-**Запустить модуль** +
- +
-<code>$ sudo a2enmod ntlm</code> +
- +
-**В файле /etc/apache2/httpd.conf добавляем:** +
- +
-   <Location /> +
-        AuthType NTLM +
-        NTLMAuth On +
-        NTLMAuthoritative OFF +
-        NTLMDomain domain.ru +
-        NTLMServer name-server.domain.ru +
-        NTLMBackup name-server.domain.ru +
-        require valid-user +
-    </Location> +
- +
-** Конфигурируем Apache2 /etc/apache2/apache2.conf** +
- +
-KeepAlive On +
- +
-MaxKeepAliveRequests 100 +
- +
-KeepAliveTimeout 15 +
- +
-**Перезапускаем Apache:** +
- +
-<code>$ sudo service apache2 restart</code> +
- +
-== Примеры == +
- +
-http://twiki.org/cgi-bin/view/Codev/TWikiOnUbuntuWindowsAuthentication +
- +
-http://dimka.yz74.ru/2009/09/23/ubuntu-ntlm-apache/ +
- +
-=== Kerberos on Apache (Linux) === +
- +
-This setup enables an Apache Server on Linux to verify Kerberos Tickets against an Active Directory server. +
- +
-Good references for Apache/Kerberos can be found at +
-  * http://www.grolmsnet.de/kerbtut/ +
-  * http://www.itefix.no/i2/node/11683 +
- +
-The following examples assume your wiki to be running on ''dokuwiki.yourdomain.com'', with your Active Directory server running at ''dc1.yourdomain.com''; +
- +
-**Note: Kerberos is case sensitive, if it is all caps - it should be!** +
- +
-  - Install Kerberos client((Redhat: yum install krb5-workstation, Debian: krb5-user)) +
-  - Install mod_auth_kerb((Redhat: yum install mod_auth_kerb, Debian: libapache2-mod-auth-kerb)) +
-  - Configure Kerberos if necessary, sample ''/etc/krb5.conf'':<code> +
-[logging] +
- default = FILE:/var/log/krb5libs.log +
- kdc = FILE:/var/log/krb5kdc.log +
- admin_server = FILE:/var/log/kadmind.log +
- +
-[libdefaults] +
- default_realm = YOURDOMAIN.COM +
- ticket_lifetime = 24h +
- forwardable = yes +
- +
-[realms] +
- YOURDOMAIN.COM = { +
-  kdc = dc1.yourdomain.com +
-  admin_server = dc1.yourdomain.com +
-  default_domain = yourdomain.com +
- } +
- +
-[domain_realm] +
- dokuwiki.yourdomain.com = YOURDOMAIN.COM +
- .yourdomain.com = YOURDOMAIN.COM +
- yourdomain.com = YOURDOMAIN.COM +
- +
-[appdefaults] +
- pam = { +
-  debug = false +
-   ticket_lifetime = 36000 +
-   renew_lifetime = 36000 +
-   forwardable = true +
-   krb4_convert = false +
- } +
-</code> +
-  - Verify that the time on the DokuWiki server is within 5 minutes of the Active Directory server. Otherwise Kerberos will not authenticate. +
-  - Verify that the Kerberos environment is working by running:<code> +
-kinit username@YOURDOMAIN.COM +
-klist +
-kdestroy +
-(If you get any errors here, make sure your DNS setup is working and you wrote all marked as "YOURDOMAIN.COM" hosts in uppercase in your krb5.conf. Try resolve every hostname manually.</code> +
-  - Create a keytab file for your DokuWiki server. Make sure you have created a non-admin user in Active Directory with no password expiration. Run this as a Domain Admin on a Windows server with Support Tools installed:<code>ktpass -princ HTTP/dokuwiki.yourdomain.com@YOURDOMAIN.COM -mapuser name_of_ad_user_you_have_created -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass the_ad_users_password -out dokuwiki.HTTP.keytab</code> Use the following if you're running Windows 7/Server 2008 R2 clients because [[http://technet.microsoft.com/en-us/library/dd560670(WS.10).aspx|des is disabled by default]] on these operating systems: <code>ktpass -princ HTTP/dokuwiki.yourdomain.com@YOURDOMAIN.COM -mapuser name_of_ad_user_you_have_created@yourdomain.com -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -pass the_ad_users_password -out dokuwiki.HTTP.keytab </code> RC4-HMAC is supported on Windows 2000 and higher. +
-  - If no errors occurred, copy the keytab file to /etc/httpd/conf/+
-  - Create /etc/httpd/conf.d/dokuwiki.conf:<code apache> +
-<Directory "/var/www/html/dokuwiki"> +
-        # Kerberos Auth +
-        AuthType Kerberos +
-        KrbAuthRealms YOURDOMAIN.COM +
-        KrbServiceName HTTP +
-        Krb5Keytab /etc/httpd/conf/dokuwiki.HTTP.keytab +
-        KrbMethodNegotiate on +
-        KrbMethodK5Passwd on +
-        require valid-user +
-</Directory> +
-</code> +
-  - (Re)start Apache: service httpd restart. +
- +
-== Troubleshooting == +
- +
-  * Restart Apache. Web server config changes won't apply until restarted. +
-  * Try using the FQDN of the DokuWiki server, i.e. <nowiki>http://dokuwiki.yourdomain.com/dokuwiki</nowiki>+
-  * If you are presented with a login window, do not enter domain/realm info, just user name and password. +
-  * Verify that the time on the DokuWiki server is within 5 minutes of the Active Directory server. Otherwise Kerberos will not authenticate. +
-  * Check all Kerberos files for case inconsistencies. +
-  * Review this instruction from start to end. See reference links where possible. +
- +
-==== Browser ==== +
- +
-Your browser needs to be setup to forward authentication info to the Webserver. +
- +
-=== Setup MS Internet Explorer === +
- +
-FIXME add detailed description +
- +
-  - add dokuwiki server to trusted zone +
-  - Enable authentication forwarding (Windows Integrated Authentication). Restart your browser to complete the change. IE 8 shown here: +
-{{http://img97.imageshack.us/img97/9099/ieenableintegratedwindo.jpg|}} +
- +
-=== Setup Firefox === +
- +
-  - Open Firefox and type //about:config// in the address bar. +
-  - In the ‘Filter’ field type one of the following (depending if you're using NTLM or Kerberos) //network.automatic-ntlm-auth.trusted-uris// or //network.negotiate-auth.trusted-uris// +
-  - Double click the name of the preference that we just searched for +
-  - Enter the URLs of the sites you wish to pass NTLM auth info to in the form of: +
-<code> +
-    http://intranet.company.com,http://email.company.lan +
-</code> +
-Notice that you can use a comma separated list in this field.+
auth/ad.txt · Последнее изменение: 2021/03/14 15:42 — aleksandr