Сквозная делегированная аутентификация 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" там, где сейчас написано "вести переговоры", но, похоже, он мало что делает.

1 ответ

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

request.UseDefaultCredentials = true;

Тем не менее, есть некоторые работы, которые нужно сделать в Active Directory:

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