Поставил плюсик!
Все поля, выделенные полужирным начертанием, должны быть заполнены.
Форум системного администратора FreeBSD, Linux, Unix, Windows.
Обсуждение железа, сетевых технологий, програмных комплексов и языков программирования.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум системного администратора FreeBSD, Linux, Unix, Windows. → Все HTTPD 80-й порт. → Apache и авторизация из AD → Добавление ответа
Все поля, выделенные полужирным начертанием, должны быть заполнены.
Поставил плюсик!
Возникла потребность упростить людям жизнь и освободить их от необходимости вводить пароль на внутренний web ресурс. Много чего про это написано, но как то не до конца и смазано... Так вот:
1. Первое что надо - это добавить домены которые будут использоваться в список разрешенных доменов (Trusted Sites) на компьютерах пользователей, для explorer и chrome это можно сделать из AD при помощи GPO. Тут может быть *, то есть *.company.internal
2. Создать пользователя к которому мы привяжем SPN (Service Principal Names). Простой, ничем не выделяющийся пользователь. Так сказать для внутренних нужд.
3. Добавить этому пользователю список доменов, по такому принципу
ktpass -princ HTTP/web1.company.internal@company.internal -mapuser user@company.internal -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass VerySecretPass -out c:\krb5.keytab
ktpass -princ HTTP/web2.company.internal@company.internal -mapuser user@company.internal -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass VerySecretPass -out c:\krb5.keytab -in c:\krb5.keytab
Можно и так добавить, это если krb5.keytab не нужен
setspn.exe -A HTTP/web3.company.internal user
Ну и так далее. Файлик krb5.keytab потом надо будит скопировать на сервер, хотя он там и не всегда нужен.
4. Можно проверить, какие домены уже добавлены
setspn.exe -L user
5. Теперь устанавливаем нужные пакеты и настраиваем kerberos с apache (использую Centos7 и все что с ним приходит по умолчанию)
Нужен apache модуль mod_auth_kerb, он потянет за собой все остальное. Если все-таки что-то не хватает, то не сложно можно посмотреть с каким пакетом это приходит. К примеру у вас нет файла /etc/krb5.conf
# yum provides */etc/krb5.conf
...
krb5-libs-1.13.2-10.el7.x86_64 : The shared libraries used by Kerberos 5
Repo : base
Matched from:
Filename : /etc/krb5.conf
...
6. Настраиваем Kerberos
# cat /etc/krb5.conf
[libdefaults]
default_realm = company.internal
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# set to true for OpenAFS to work
allow_weak_crypto = true
# The following libdefaults parameters are only for Heimdal Kerberos.
fcc-mit-ticketflags = true
[realms]
company.internal = {
kdc = ad3.company.internal
kdc = ad2.company.internal
kdc = ad1.company.internal
admin_server = ad3.company.internal
}
[domain_realm]
.company.internal = company.internal
company.internal = company.internal
7. Настраиваем Apache. Конфиг упрощен...
<VirtualHost 0.0.0.0:80>
ServerName web1.company.internal
DocumentRoot "/var/www/web1.company.internal"
<Directory "/var/www/web1.company.internal">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require valid-user
AuthType Kerberos
AuthName "User Verification"
</Directory>
KrbMethodNegotiate on
KrbMethodK5Passwd on
KrbAuthoritative on
KrbAuthRealms company.internal
Krb5Keytab /etc/krb5.keytab
KrbLocalUserMapping on
KrbVerifyKDC off
KrbServiceName Any
KrbSaveCredentials off
</VirtualHost>
8. Я протестировал с PHP и с HHVM, есть только одна разница, как до кода доходит имя пользователя. Так как всю авторизацию на себя берет Apache, код может быть независимым и ничего про AD не знать.
В PHP Пользователь приходит в
$_SERVER['REMOTE_USER']
В HHVM (так как посредник FastCGI)
$_SERVER['REDIRECT_REMOTE_USER']
9. Ну раз заговорили про HHVM то настраивается он тоже придельно просто
Так же через yum ставим hhvm с hhvm.com и для подключения к apache нужны дополнительные модули
# cat /etc/httpd/conf.modules.d/proxy.load
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Пополнить конфиг apache
<VirtualHost 0.0.0.0:80>
...
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/var/www/web1.company.internal/$1
...
</VirtualHost>
и не забыть запустить сам hhvm.service
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 13 official extensions. Copyright © 2003–2010 PunBB.