Исправьте основной тип Kerberos для службы на хосте

Существует несколько типов принципалов Kerberos. Обычный пользователь, как princpal michael-o@COMPANY.COM было бы KRB_NT_PRINCIPAL, Но как насчет услуги, как HTTP/host.company.com@COMPANY.COM? Есть несколько возможных типов, таких как KRB_NT_SRV_{INST|HST|XHST}, Что является правильным?

Из моего понимания INST только для ТГЦ. Я бы предположил, что правильный ответ должен быть HST, Я не смог найти подсказку в исходном коде Oracle JDK, но эти два противоречивых момента: 1 против 2.

2 ответа

Решение

Раздел 7.5.8 RFC 4120 определяет типы имен. На практике большинство всего использует KRB_NT_SRV_HST. Я никогда не видел KRB_NT_SRV_XHST, кроме как в RFC и в тестовом коде. Обычно KRB_NT_SRV_INST используется, когда второй компонент не является именем хоста. Примеры включают TGT или другие реплицированные сервисы, где не имеет значения, какой хост вы получаете. Однако типы имен не имеют большого значения. Раздел 6.2 описывает это:

Как и в случае с именами областей, необходимы соглашения, чтобы все согласились с тем, какая информация подразумевается под основным именем. Поле типа имени, которое является частью основного имени, указывает вид информации, подразумеваемой именем. Имена типа ДОЛЖНЫ рассматриваться только как подсказка для интерпретации значения имени. Это не имеет значения при проверке на эквивалентность. Имена участников, отличающиеся только типом имени, идентифицируют одного и того же участника. Тип имени не разбивает пространство имен. Игнорируя тип имени, никакие два имени не могут быть одинаковыми (т. Е. По крайней мере один из компонентов или область ДОЛЖНЫ быть разными). Определены следующие типы имен: Современные реализации Kerberos немного обрабатывают KRB_NT_SRV_HST. В частности, они с большей вероятностью будут генерировать перекрестные ссылки на основе имени хоста во втором компоненте такого принципала. Таким образом, если первый компонент идентифицирует сервис, а второй - имя хоста, SRV_HST является наилучшим.

RFC 1510 - лучшая ссылка для этого. См. http://www.rfc-editor.org/rfc/rfc1510.txt раздел 7.2.1. "Основной идентификатор сервера на хосте обычно состоит из двух частей: (1) область KDC, с которой сервер зарегистрирован и (2) двухкомпонентное имя типа NT-SRV-HST, если именем хоста является имя домена Интернета, или многокомпонентное имя типа NT-SRV-XHST, если именем хоста является такой формы, как X.500, которая допускает разделители слеша (/). Первый компонент двух- или многокомпонентного имени будет идентифицировать службу, а последние компоненты идентифицируют хост. Где имя хоста не имеет значения чувствительное (например, для имен доменов в Интернете) имя хоста должно быть в нижнем регистре.Для таких сервисов, как telnet и команды Berkeley R., которые запускаются с системными привилегиями, первым компонентом будет строка "хост" вместо службы конкретный идентификатор. "

Другие вопросы по тегам