Почему "Ссылка на локальную область" не работает с MIT-Kerberos?
Я пытаюсь настроить межобластную аутентификацию между двумя KDC (EXAMPLE.COM & HADOOP.COM), чтобы пользователь в области EXAMPLE.COM мог получить доступ к службе в HADOOP.COM. Я добавил раздел capaths в мой krb5.conf для того же:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = examplekdc.example.com
admin_server = examplekdc.example.com
}
HADOOP.COM = {
kdc = hadoopkdc.hadoop.com
admin_server = hadoopkdc.hadoop.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[capaths]
HADOOP.COM = {
EXAMPLE.COM = .
}
Я также добавил требуемый принципал krbtgt/HADOOP.COM@EXAMPLE.COM в оба KDC. Пока все работает, и мое приложение может делать то, что ему нужно.
Меня беспокоит следующая строка в моем журнале трассировки на EXAMPLE.COM:
[158447] 1497720267.441664: TGS request result: -1765328377/Server myservice/hadoopkdc.hadoop.com@EXAMPLE.COM not found in Kerberos database
[158447] 1497720267.441680: Local realm referral failed; trying fallback realm HADOOP.COM
Мои вопросы следующие:
- что это за реферал? Это жаргон Kerberos для запросов между областями?
- почему местный реферал потерпит неудачу? Как явно указать, как я хочу, чтобы происходило обращение к локальной области?
- В чем смысл запасного царства? И как мне указать один?
Как вы можете видеть из моего krb5.conf, я не указал явно область резервирования или ссылки, поэтому я думаю, что Kerberos выбирает для них значения по умолчанию. Я хочу знать, как я могу указать их явно.
1 ответ
[158447] 1497720267.441664: TGS request result: -1765328377/Server myservice/hadoopkdc.hadoop.com@EXAMPLE.COM not found in Kerberos database
Ваш клиент запросил у KDC принципала обслуживания. Ваш KDC не знал, как найти сферу для этого принципала. Я считаю, что если вы добавите запись в [domain_realms]
раздел krb5.conf
используется EXAMPLE.COM
KDC с содержанием вроде
[domain_realms]
.hadoop.com = HADOOP.COM
Тогда KDC узнает, что хосты заканчиваются на hadoop.com
обслуживаются HADOOP.COM
королевство и попробует реферал сам.
[158447] 1497720267.441680: Local realm referral failed; trying fallback realm HADOOP.COM
Это производится в try_fallback
функция в src/lib/krb5/krb/get_creds.c
когда клиент получает ошибку от KDC при первом запросе. Клиент немного более агрессивен в угадывании области службы, чем KDC, потому что, если клиент не может угадать, запрос потерпит неудачу. Клиент пытается HADOOP.COM
потому что последнее предположение - убрать имя хоста и попробовать имя домена в верхнем регистре. Если вы правильно настроите KDC, вы сохраните один запрос. Хосты Windows, скорее всего, больше заботятся о правильной конфигурации KDC, чем MIT Kerberos.