| 
 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.
 
и Ваше мнение важно для нас