Сквозная делегированная проверка подлинности Kerberos в ASP.NET

Я пытаюсь настроить внутренний веб-сайт, который будет связываться с другой серверной службой в сети от имени пользователя с помощью HttpWebRequest. Мне нужно использовать встроенную проверку подлинности Windows в приложении ASP.NET, поскольку серверная система поддерживает только этот тип проверки подлинности.

Я могу настроить IWA в приложении ASP.NET, и оно использует Kerberos, как я и ожидал. Однако, когда аутентификация делегируется серверной системе, она больше не работает. Это связано с тем, что бэкэнд-система поддерживает только Kerberos IWA, но делегирование по какой-то причине - даже если входящий запрос аутентифицирован Kerberos - преобразует аутентификацию в NTLM перед перенаправлением в бэкэнд-систему.

Кто-нибудь знает, что мне нужно сделать в приложении ASP.NET, чтобы оно могло пересылать удостоверение с помощью kerberos?

Я пробовал следующее, но похоже, что это не работает

CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(request.RequestUri, "Negotiate", CredentialCache.DefaultCredentials.GetCredential(request.RequestUri, "Kerberos"));
request.Credentials = credentialCache;

Я также пытался установить «Kerberos» там, где теперь написано «Negotiate», но, похоже, это мало что дает.


person Erlend    schedule 03.06.2010    source источник


Ответы (1)


В вашем приложении вам нужно использовать только DefaultCredentials:

request.UseDefaultCredentials = true;

Однако в Active Directory есть над чем поработать:

  • Настройте имя участника-службы в учетной записи пула приложений для внешнего приложения.
  • Настройте имя участника-службы в учетной записи пула приложений для серверного приложения.
  • Настройте делегирование от первого пула приложений ко второму SPN
person Nico    schedule 17.08.2010