2016-01-25 5 views
1

Я прочитал много блогов, и многие статьи, касающиеся того, как мой сервер IIS передают аутентифицированный пользователь SQL. Я застрял, однако, от того, что именно мне нужно, чтобы установить SPN на. Вот мои настройки ...сценарий олицетворения ASP.NET. IIS 8.5 к SQL 2012, какой SPN нужно настроить?

IIS:
пула приложений .Net v4.0
Integrated Pipepline
Идентичность = NetworkService

Аутентификация:
ASP.NET Олицетворение = True (включено)
проверка подлинности Windows Enabled
Provider = Обсуди: Kerberos
Disabled режима ядра аутентификации

IIS SERVER:
доверенный для делегирования служб (только Kerberos)

SQL SERVER:
доверенный для делегирования служб (только Kerberos)

Из того, что я понимаю, с этими настройками я должен быть проходящими windows, которую я в настоящее время зарегистрировал на сервере IIS, и должен передать этот токен SQL для проверки подлинности. Тем не менее, он только постоянно подсказывает мне пользователя/пропуск с сайта.

Я нашел эту статью http://blog.reveille.org.uk/2010/01/asp-net-impersonation-delegation-2/, что говорит мне, мне нужно установить SPN на «Machine», используя что-то вроде этого:

setspn -A HTTP/[dns name of the site] [machine name] 

Я не уверен, что именно SPN (ы) мне нужно. Может ли кто-нибудь помочь мне? Я думаю, что это что-то вроде

setspn -A HTTP/mywebserver.mydomain.com mywebserver 

Или было бы лучше использовать учетную запись домена в моем пуле приложений с множеством SPN на них?

+0

Как обновление, я изучаю, может возникнуть проблема с брандмауэром Windows. Кто-нибудь знает, будет ли брандмауэр с настройками по умолчанию блокировать проверку подлинности Windows? –

ответ

1

Хорошо Ol 'Kerberos. Я не слишком усложняю этот ответ, если не будет запрошено больше объяснений. Я исхожу из вашего вопроса, что мы говорим об одном сервере, и я также предполагаю, что он связан с доменом. Таким образом, я собираюсь определить следующий для моего контрольного списка:

  • Пусть имя NetBIOS для сервера будет websvr1
  • Пусть FQDN (полное доменное имя) для сервера быть websvr1 .domain.com
  • И, конечно же, мы исходим из того, что мы находимся на домене domain.com
  • Пусть имя NetBIOS для SQL Server будет SQL1
  • Дайте FQDN для SQL-сервера sql1.domain.ком
  • Пусть пользователь службы SQL Server будет DOMAIN \ sqlusr
  • Я предполагаю, что порт по умолчанию SQL Server 1433

Сказав это, плюс с учетом того, что уже было сказано в вашем вопрос, я хотел бы попробовать эту установку:

Первый Hop Setup (SPN)

  • зарегистрируйте следующие СПбОЕ
  • Setspn -S HTTP/websvr1.domain.com websvr1 $
  • Setspn -S HTTP/websvr1 websvr1 $

First Hop Setup (Authentication)

  • Пожалуйста, включите в провайдеры переговоры и NTLM, чтобы обеспечить резервный механизм.
  • ПРИМЕЧАНИЕ: Обеспечить проведение переговоров сверху из списка NTLM в списке поставщиков.
  • Вам не нужно отключать аутентификацию в режиме ядра. Честно говоря, я не уверен, почему так много людей отключает аутентификацию в режиме ядра. Даже для пулов приложений, работающих как учетная запись домена, вы можете использовать атрибут useAppPoolCredentials = "true", чтобы позволить аутентификации в режиме ядра успешно расшифровывать билет Kerberos, зашифрованный учетной записью домена.
  • Остальная часть вашей настройки в порядке.

Второй-Hop Setup (SPN)

  • Просто чтобы мы охватить все возможные комбинации, установите следующие имена SPN:
  • Setspn -S MSSQLSvc/sql1.domain.com DOMAIN \ sqlusr
  • Setspn -S MSSQLSvc/sql1.domain.com: 1433 DOMAIN \ sqlusr
  • Setspn -S MSSQLSvc/SQL1 DOMAIN \ sqlusr
  • наборы рп -S MSSQLSvc/SQL1: 1433 DOMAIN \ sqlusr

Второй-Hop Setup (делегирование IIS)

Теперь, как IIS и SQL SPNs настроены, вы должны быть в состоянии настройки делегирования ограничений чтобы позволить IIS запрашивать билет на услугу MSSQLSvc от имени имени пользователя в настоящее время от имени пользователя.

  • На вкладке Делегация AD для учетной записи DOMAIN \ websvr1 выберите параметр «Доверять этому компьютеру только для делегирования только указанным услугам».
  • Оставьте использование только Kerberos
  • Выберите MSSQLSvc \ sql1 и MSSQLSvc \ sql1.domain.com из списка и добавьте эти службы.

Установка выше считается ограниченной делегацией Kerberos, которая намного безопаснее, чем неограниченное делегирование. И, к моему пониманию, это должно было его покрыть.

ПРИМЕЧАНИЕ

Я решил использовать Setspn -S, так как это будет гарантировать, что я не случайно установить повторяющиеся имена SPN и нарушить проверку подлинности Kerberos. В приведенном выше примере подмените имена серверов, полное доменное имя и учтите их реальные соответствующие значения.

Примечание (Again)

Для сервера SPN Web, если по какой-либо причине URL хоста, мы просим только запись пользовательских DNS (пожалуйста, убедитесь, что это A-запись вместо CNAME, кстати), тогда вам нужно будет зарегистрировать эту запись DNS).

Надеюсь, информация, указанная выше, поможет.