Сквозная делегированная аутентификация 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