Я использую IIS и SQL Reporting Server на одном сервере. IIS работает как d\acct1
и SSRS работает как d\acct2
.
Изначально я зарегистрировал SPN HTTP/server.d.com
для обоих d\acct1
и d\acct2
и настроен как для неограниченного делегирования Kerberos в Active Directory.
Эта конфигурация нарушила работу Kerberos, потому что были повторяющиеся имена участников-служб для HTTP/server.d.com
.
Если я удалю SPN для SSRS, IIS будет работать. Если я удалю SPN для IIS, SSRS будет работать.
Есть ли способ разделить SPN между двумя разными учетными записями служб, которые работают на одном сервере, чтобы они не создавали дублирующееся SPN?
Или я должен создать две записи A в активном каталоге для iis.server.d.com
и reports.server.d.com
и использовать заголовки хоста, чтобы два псевдонима оставались прямо внутри каждой соответствующей службы?
Исследование того, как работает делегирование Kerberos, показывает, что нет, вы не можете совместно использовать SPN между учетными записями служб в одном устройстве.
Я решил проблему, предоставив второй IP-адрес моему серверу и сопоставив IIS с одним IP-адресом, а SSRS - с другим.
Затем я создал две новые записи A в DNS (не используйте записи C, они ненадежны с делегированием Kerberos), чтобы указать на службы. iis.server.d.com
указывает на IP-адрес IIS и ssrs.server.d.com
указывает на IP-адрес SSRS.
Наконец, я удалил все SPN для обоих d\acct1
и d\acct2
и переназначили SPN как HTTP/iis.server.d.com
и HTTP/ssrs.server.d.com
соответственно.
Кроме того, я обнаружил, что редактирование имен SPN с помощью ADSIEdit далеко проще, чем использовать setspn
командная строка.