В каком формате указывается SPN?

Во-первых, имя участника службы регистрируется для пользователя с помощью команды setspn.

setspn -a CS/dummy@abc.com dummyuser

setspn -l dummyuser

дает вывод как

CS/dummy@abc.com

Затем, когда команда ktpass выполняется с параметром /mapUser, имя участника службы учетной записи пользователя изменяется, так что компонент домена удаляется.

ktpass / pass Пароль @ 123 -out dummy.1.keytab -princ CS/dummy@abc.com -crypto DES-CBC-MD5 + DumpSalt -ptype KRB5_NT_PRINCIPAL + desOnly / mapOp set /mapUser dummyuser

setspn -l dummyuser

дает вывод как

CS / фиктивная

Правильны ли обе следующие команды и работают ли они одинаково?

setspn -a CS / dummy dummyuser

setspn -a CS/dummy@abc.com dummyuser

При указании имени службы в имени участника-службы обязательно ли включать компонент домена? Можете ли вы уточнить?

1 ответ

Поскольку вы не упомянули об этом, я предполагаю, что вы находитесь в доменной среде Windows Active Directory? Я говорю это потому, что приведенная в вашем примере команда "ktpass" является родной для Windows. Исходя из этого, я предполагаю, что ваше DNS-имя домена Active Directory - abc.com, а имя области Kerberos - ABC.COM.

  1. При создании таблицы ключей имя участника-службы сопоставляется с объектом пользователя или компьютера (принципалом, в терминах Kerberos), поэтому вам не нужно настраивать имя участника-службы после этого, если только вы не добавите их в качестве вторичных имен участников-служб.
  2. Сделайте себе одолжение и поместите имя области Kerberos в верхний регистр в вашей команде создания keytab. Лучше всего рандомизировать пароль, чтобы никто не знал его. Функциональность SSO Kerberos будет прекрасно работать с этим. И имя области Kerberos должно быть добавлено к аргументу "/mapUser". Я изменил ваш пример на лучший, который вы должны использовать.
  3. Это выходит за рамки вашего вопроса, но больше не используйте шифрование DES. Это давно не пользуется популярностью в отрасли. Я не буду больше говорить об этом, потому что вы не об этом.
  4. Не используйте синтаксис "setspn -a" для добавления или создания имен участников-служб на принципалах, вместо этого используйте "setspn -s", так как "-s" проверяет дубликаты имен участников-служб, в то время как "-a" этого не делает (см.: "setspn - s "против" setspn -a ").
  5. Убедитесь, что вы полностью квалифицируете хост-часть SPN (т.е. dummy.abc.com, а не просто dummy). Иначе, механизм аутентификации может немедленно попробовать NTLM вместо Kerberos, что не то, что вам нужно.
  6. В простой среде, состоящей только из одного домена DNS и одной области Kerberos и имеющей сопоставление области Kerberos с DNS, домены уже установлены (обычно с помощью /etc/krb5.conf в UNIX/Linux, Windows обрабатывает это автоматически, но если это в этом случае он не будет пытаться использовать C:\Windows\krb5.ini, если он есть), в то время как вам не нужно квалифицировать сферу Kerberos как часть SPN при запуске "setspn -a" или "setspn -s", вам следует сделайте это в вашей команде создания Kerberos.

Итак, в вашем случае, основываясь на всем, что я упомянул, пока вы можете использовать:

setspn -a CS/dummy dummyuser

Было бы лучше сделать это так:

setspn -s CS/dummy.abc.com dummyuser

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

ktpass +rndPass -out dummy.1.keytab -princ CS/dummy.abc.com@ABC.COM -crypto DES-CBC-MD5 +DumpSalt -ptype KRB5_NT_PRINCIPAL +desOnly /mapOp set /mapUser dummyuser@ABC.COM
Другие вопросы по тегам