DokuWiki.ru

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

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

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


auth:ad

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
auth:ad [2017/03/14 21:00]
5.228.3.150
auth:ad [2021/03/14 15:42] (текущий)
aleksandr Статус обсуждения изменён
Строка 1: Строка 1:
-Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.  +====== Аутентификация через Active Directory ====== 
-  + 
-Именно для этого мы и набираем удалённых сотрудниковкоторые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.  +Это [[doku>auth| серверное расширение (backend)]] позволяет проводить аутентификацию пользователей с помощью Active Directory. 
-  + 
-Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк +Аутентификация 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. Для начала настройки необходимо включить предустановленный плагин
-  + 
-Вам достаточно просто зарегистрироваться на нашем сервисе. > www.like-rabota.tk <  +Серверное расширение включено в дистрибутив DokuWiki начиная с версии rc2009-12-02 "Mulled Wine"
-  + 
-Вывод заработанных средств ежедневно в течении нескольких минут.+Также будет необходимо включить поддержку 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. 
 + 
 +~~DISCUSSION:off~~
auth/ad.1489514420.txt.gz · Последнее изменение: 2017/03/14 21:00 — 5.228.3.150