2013-01-18 3 views
5

Używam mod_auth_kerb & Apache HTTPD do uwierzytelniania użytkowników witryny na serwerze Kerberos. Otrzymuję dziwny komunikat o błędzie w moim dzienniku błędów Apache. (Pamiętaj, że ze względu na bezpieczeństwo zmieniłem zasadę w tym poście, ale format pozostaje taki sam). Przechodząc na wyjściu poziom debugowania dla Apache pozwoliło mi uzyskać więcej dzienników informacyjnych:główny błąd parsowania mod_auth_kerb

[debug] src/mod_auth_kerb.c(1932): [client x.x.x.x] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos 
[debug] src/mod_auth_kerb.c(1277): [client x.x.x.x] Acquiring creds for HTTP/[email protected] 
[debug] src/mod_auth_kerb.c(1470): [client x.x.x.x] Credentials cache FILE:/tmp/krb5cc_48 not found, create one 
[error] [client x.x.x.x] Could not parse principal HTTP/[email protected]/server_hostname: Malformed representation of principal (-1765328250) 
[debug] src/mod_auth_kerb.c(1598): [client x.x.x.x] Failed to obtain credentials for s4u2proxy 
[debug] src/mod_auth_kerb.c(1137): [client x.x.x.x] GSS-API major_status:000d0000, minor_status:0000000d 
[error] [client x.x.x.x] gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied) 

Przypuszczam, że problem jest z „/ nazwa_hosta_serwera” na końcu głównej. W pliku keytab Kerberos nazwa użytkownika jest wymieniona jako HTTP/[email protected]. Jak mogę zmienić zasadę, która jest przekazywana do mod_auth_kerb? Czy istnieje inny sposób na pogodzenie tego błędu parsowania?

+1

Twoje pytanie nie jest zbyt jasne. Czy mówisz o inicjatorze kontekstu lub o tym, na kogo SPN (akceptujący) istnieje w karcie klucza? –

+0

Jestem prawie pewna, że ​​mówię o inicjatorze kontekstu. Na końcu ma dodatkową "/ hostname", której nie mogę znaleźć. W rzeczywistości, zgodnie z http://cryptnet.net/mirrors/docs/krb5api.html, "Dziedzina w nazwie Kerberos nie może zawierać znaków slash, dwukropka ani pustych." Tak więc jestem zdezorientowany, dlaczego część obszaru inicjatora kontekstu zawierała w ogóle ukośnik. –

+0

Podsumuję twoje oświadczenie, proszę spojrzeć na to: http://web.mit.edu/kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-user/What-is-a-Kerberos-Principal_003f .html Definiuje składnię zlecenia Kerberos. Czy zapytałeś o to swojego administratora? Z jakiego KDC korzystasz? AD, MIT lub Heimdal? –

Odpowiedz

6

Okazało się, że jest to problem z systemem plików. Plik keytab był własnością root: root, a uprawnienia zostały ustawione na odczyt/zapis tylko dla właściciela (0600). Dlatego Apache HTTPD nie był w stanie uzyskać dostępu do pliku keytab. Nadal nie wiem, jak mod_auth_kerb wymyślił dyrektora inicjatora kontekstu, którym był. Ale teraz, gdy keytab jest odczytywalny przez Apache, wszystko działa poprawnie.

+2

Możesz zrobić "setfacl -m u: apache: r--/etc/krb5.keytab" na CentOS 7 (i wcześniej), aby to naprawić. –