Назад | Перейти на главную страницу

Ошибка аутентификации Apache / mod_auth_gss

Извините, если это не тот сайт обмена стеками.

Основано на документация (для справки я также использовал это сообщение в блоге) У меня это в 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).

Если вы посмотрите предыдущую запись, я заметил, что столкнулся с той же проблемой.