Извините, если это не тот сайт обмена стеками.
Основано на документация (для справки я также использовал это сообщение в блоге) У меня это в httpd.conf:
# Increase max size of HTTP request headers so we are sure it can hold any SPNEGO token.
LimitRequestFieldSize 12392
# Load the module
LoadModule auth_gss_module /apps/apache2/modules/mod_auth_gss.so
# Set general log level so we get some output
LogLevel debug
<Directory "/var/www/secured">
Order allow,deny
Allow from all
AuthType GSSAPI
AuthGSSServiceName HTTP
AuthGSSKeytabFile /path/to/keytab/servername.keytab
#AuthGSSStripDomainBS On
#AuthGSSStripDomainAT On
AuthGSSForceCase upper
AuthGSSDebug On
require valid-user
</Directory>
И когда я попадаю на страницу, я получаю сообщение «Неавторизовано» в браузере и следующее в apache error_log:
tail -f logs/error_log
[authz_core:debug] [pid 3657:tid 27] mod_authz_core.c(802): [client 10.138.48.42:1432] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(620): [client 10.138.48.42:1432] gss_authenticate: type = GSSAPI
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(334): [client 10.138.48.42:1432] authenticate_user_gss called
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(373): [client 10.138.48.42:1432] Using keytab: KRB5_KTNAME=/path/to/keytab/servername.keytab
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(411): [client 10.138.48.42:1432] Client wants GSS mech: <unknown>
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(288): [client 10.138.48.42:1432] acquire_server_creds for HTTP@servername
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(438): [client 10.138.48.42:1432] got server creds for: HTTP/servername.testdomain.local@
[core:error] [pid 3657:tid 27] [client 10.138.48.42:1432] gss_accept_sec_context() failed: Invalid token was supplied (No error)
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(650): [client 10.138.48.42:1432] Authentication failed.
[core:debug] [pid 3657:tid 27] mod_auth_gss.c(592): [client 10.138.48.42:1432] note_gss_auth_failure: auth_name = <undefined>
Я замечаю, что мне кажется acquire_server_creds for HTTP@servername
но got server creds for: HTTP/servername.testdomain.local@
. Я не понимаю, с чего начать.
Это коробка Solaris 10, в которой Apache 2.4 пытается связаться с сервером домена Windows 2008.
Файл Hosts на сервере Solaris:
XXX.XXX.XXX.XXX servername.testdomain.local servername
Нет /etc/hostname
Файл существует.
Ваш / etc / hosts в порядке (первое имя - полное). Проверьте, является ли имя хоста на машине коротким или полным. Просто выполните hostname и проверьте ответ.
Если имя короткое, попробуйте изменить имя хоста на полное имя:
имя хоста servername.testdomain.local
Я думаю, что есть опция -t, чтобы сделать это временно.
Чао!
Аваланс,
Я являюсь автором записи в блоге, на которую вы ссылаетесь.
Проблема, которую вы это комментируете, обычно связана с тем, что реализация kerberos использует первое имя, полученное системой (обычно это первая запись в файле / etc / hosts). Что происходит, так это то, что у вас есть keytab с полным именем, а первая запись хоста - это имя без уточнения. В этих записях я настроил полное имя в трех местах: keytab, первая запись в / etc / hosts и имя хоста машины (/ etc / hostname).
Если вы посмотрите предыдущую запись, я заметил, что столкнулся с той же проблемой.