Сквозная делегированная аутентификация Kerberos в ASP.NET - PullRequest
3 голосов
/ 03 июня 2010

Я пытаюсь настроить внутренний веб-сайт, который будет связываться с другим внутренним сервисом в сети от имени пользователя, используя запрос 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» там, где сейчас написано «Переговоры», но, похоже, он мало что делает.

1 Ответ

1 голос
/ 18 августа 2010

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

request.UseDefaultCredentials = true;

Однако в Active Directory необходимо выполнить некоторые действия:

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