|
mod_ntlm.conf.j2
|
|---|
# {{ ansible_managed }}
# create virtual hosts for NTLM
{%- set is_require = 0 %}
{%- if ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' %}
{%- set is_require = 1 %}
{% endif %}
<IfModule !auth_ntlm_winbind_module.c>
LoadModule auth_ntlm_winbind_module modules/mod_auth_ntlm_winbind.so
</IfModule>
Listen {{ ntlm_http_port }}
Listen {{ ntlm_https_port }}
<IfModule !ssl_module.c>
LoadModule ssl_module modules/mod_ssl.so
{% if is_require > 0 %}
# httpd 2.4
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
SSLSessionCache shmcb:/var/cache/httpd/ssl/scache(512000)
{% else %}
# httpd 2.2
SSLMutex default
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
{% endif %}
SSLPassPhraseDialog builtin
SSLSessionCacheTimeout 300
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLProtocol All -SSLv2 -SSLv3
</IfModule>
|
NTLM-авторизация в стороннем окружении
Как настроить NTLM-авторизацию в стороннем окружении |
Поддержка NTLM-авторизации по умолчанию
включена в дистрибутив продукта
Во всех лицензиях Битрикс24 в коробке
и
в лицензии Энтерпрайз продукта 1С-Битрикс: Управление сайтом
.
. Мы рекомендуем использовать виртуальную машину BitrixVM, в ней настройка окружения для NTLM-авторизации выполняется просто через специальный
пункт меню
В меню BitrixVM пункт
8. Управление сайтами (Configure pool sites) > 7. Настроить NTLM авторизацию (Configure NTLM auth for sites).
Подробнее в курсе Виртуальная машина BitrixVM.
.
Если же вы по каким-то причинам не используете BitrixVM, то для корректной работы NTLM-авторизации в вашем окружении понадобится выполнить настройки аналогичные схеме работы в виртуальной машине.
Описание механизма работы
Внутренний механизм работы NTLM в виртуальной машине выглядит так:
- В виртуальной машине Nginx слушает порты 80/443 на всех интерфейсах, Apache - localhost: 8888. Это основной маршрут для работы с проектом (без NTLM-авторизации);
- Apache также слушает на внешнем интерфейсе порты 8090 и 8091. Этот хост может направлять на основную папку проекта или на подготовленную, с симлинками ядра. Для этого location в Apache настроена NTLM-авторизация;
- В настройках модуля LDAP должна быть включена опция
Включить переадресацию NTLM авторизации
Перейдите на страницу Настройки модуля (Настройки > Настройки продукта > Настройки модулей > AD/LDAP интеграция).
Подробнее... .
Cетевые взаимодействия схематично:

После включения и настройки механизм NTLM-авторизации начинает работать следующим образом:
- Неавторизованный посетитель приходит на проект и попадает на 80 порт для http или 443 порт для https;
- Продукт обработчиком события перенаправляет его на открытый порт Apache (8090 для http или 8091 для https);
- Apache выполняет NTLM-авторизацию пользователя, создается сессия;
- Ядро продукта перенаправляет пользователя назад на 80 или 443 порт (для http и https соответственно);
- Следующие переходы по сайту пользователь выполняет в обычном режиме, пока не истечет сессия.
Таким образом все переадресации берет на себя ядро продукта.
В спойлерах ниже можно посмотреть пример шаблонов для настройки location в Apache, смотрящего наружу. Или скачайте файлы примера в виде архива.
|
ntlm_site.conf.j2
|
|---|
# {{ ansible_managed }}
# create virtual hosts for NTLM
# site: {{ item.SiteName }}
#
{%- set is_require = 0 %}
{%- if ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' %}
{%- set is_require = 1 %}
{% endif %}
<VirtualHost *:{{ ntlm_http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ item.ServerName }}
ServerAlias *.{{ item.ServerName }}
DocumentRoot {{ item.DocumentRoot }}
KeepAlive On
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
ErrorLog logs/{{ item.SiteShort }}_error_log
#CustomLog logs/{{ item.SiteShort }}_access_log combined
#
{% if item.SiteCharset == 'windows-1251' -%}
# configure {{ item.SiteCharset }}
php_admin_value mbstring.internal_encoding cp1251
php_admin_value mbstring.func_overload 0
php_admin_value default_charset cp1251
{% endif %}
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<DirectoryMatch .*\.(svn|git|hg)/.*>
{% if is_require > 0 -%}
Require all denied
{% else -%}
Deny From All
{% endif %}
</DirectoryMatch>
<DirectoryMatch {{ item.DocumentRoot }}/bitrix/(cache|managed_cache|local_cache|stack_cache)>
AllowOverride none
AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
php_value engine off
</DirectoryMatch>
<DirectoryMatch {{ item.DocumentRoot }}/(upload|bitrix/images|bitrix/tmp)>
AllowOverride none
AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
php_value engine off
</DirectoryMatch>
<Directory {{ item.DocumentRoot }}/>
Options FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.php index.html index.htm
AuthName "NTLM Authentication thingy"
NTLMAuth on
NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
NTLMBasicAuthoritative on
AuthType NTLM
Require valid-user
php_admin_value session.save_path {{ item.phpSessionDir }}
php_admin_value upload_tmp_dir {{ item.phpUploadDir }}
</Directory>
<Directory {{ item.DocumentRoot }}/upload/support/not_image>
AllowOverride none
{% if is_require > 0 -%}
Require all denied
{% else -%}
Order allow,deny
Deny from all
{% endif %}
</Directory>
</VirtualHost>
{% if item.HTTPSConf != '' -%}
<VirtualHost *:{{ ntlm_https_port }}>
ServerAdmin webmaster@localhost
ServerName {{ item.ServerName }}
ServerAlias *.{{ item.ServerName }}
DocumentRoot {{ item.DocumentRoot }}
KeepAlive On
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
ErrorLog logs/{{ item.SiteShort }}_error_log
#CustomLog logs/{{ item.SiteShort }}_access_log combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
# CERTIFICATE ANSIBLE MANAGED BLOCK
SSLCertificateFile {{ item.HTTPSCert }}
SSLCertificateKeyFile {{ item.HTTPSPriv }}
# CERTIFICATE ANSIBLE MANAGED BLOCK
{% if item.SiteCharset == 'windows-1251' -%}
# configure {{ item.SiteCharset }}
php_admin_value mbstring.internal_encoding cp1251
php_admin_value default_charset cp1251
{% endif %}
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<DirectoryMatch .*\.(svn|git|hg)/.*>
{% if is_require > 0 -%}
Require all denied
{% else -%}
Deny From All
{% endif %}
</DirectoryMatch>
<DirectoryMatch {{ item.DocumentRoot }}/bitrix/(cache|managed_cache|local_cache|stack_cache)>
AllowOverride none
AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
php_value engine off
</DirectoryMatch>
<DirectoryMatch {{ item.DocumentRoot }}/(upload|bitrix/images|bitrix/tmp)>
AllowOverride none
AddType text/plain php,php3,php4,php5,php6,phtml,pl,asp,aspx,cgi,dll,exe,ico,shtm,shtml,fcg,fcgi,fpl,asmx,pht
php_value engine off
</DirectoryMatch>
<Directory {{ item.DocumentRoot }}/>
Options FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.php index.html index.htm
AuthName "NTLM Authentication thingy"
NTLMAuth on
NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
NTLMBasicAuthoritative on
AuthType NTLM
Require valid-user
php_admin_value session.save_path {{ item.phpSessionDir }}
php_admin_value upload_tmp_dir {{ item.phpUploadDir }}
</Directory>
<Directory {{ item.DocumentRoot }}/upload/support/not_image>
AllowOverride none
{% if is_require > 0 -%}
Require all denied
{% else -%}
Order allow,deny
Deny from all
{% endif %}
</Directory>
</VirtualHost>
{%- endif %}
|
Подробно настройки со стороны административной части продукта описаны в уроках:
- Настройка NTLM авторизации со стороны продукта курса Администратор. Базовый;
- 7. Настройка NTLM-авторизации на всех сайтах курса Виртуальная машина BitrixVM.
и Ваше мнение важно для нас