Принудительное указание 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.

Рекомендации:

Другие вопросы по тегам