Принудительное указание SPN для URL в.Net
Я испытываю непоследовательное поведение при использовании.Net Framework (C#, а также Powershell) для доступа к Kerberized HTTP-сервису. Это относится к нашей конфигурации DNS и нашему использованию CNAME вместо A-записей для сервисов Kerberized. Обходной путь, предложенный Microsoft, состоит в том, чтобы убедиться, что вы используете A-записи для своих имен хостов, но это не вариант в моей корпоративной среде.
Мне нужно решение, которое позволит мне принудительно указывать определенное имя участника-службы для определенного URL-адреса, гарантируя, что я использую то же имя хоста для имени участника-службы, что и для URL-адреса. В качестве альтернативы, опция для принудительной согласованной политики для разрешения URL-адресов для SPN.
1 ответ
Как всегда, когда вы знаете, что ищете, решение найти довольно легко;-) В этом примере я использую веб-сервис HTTPS на порту 8080:
C#:
System.Net.AuthenticationManager.CustomTargetNameDictionary
.Add("https://my-service.tld:8080/", "HTTP/my-service.tld");
Powershell:
[System.Net.AuthenticationManager]::CustomTargetNameDictionary.
Add("https://my-service.tld:8080/", "HTTP/my-service.tld")
Не забудьте про косую черту. Удалить :8080
если используется порт 80.
Рекомендации: