Я использую DCOM для предоставления различных служб приложений в сети Windows, используя Kerberos для обработки аутентификации. Система обычно работает нормально, но у меня возникают проблемы с доступом к службе из отдельного (доверенного) домена. В частности, служба не может выполнять обратные вызовы клиентскому приложению, получая сообщение об ошибке «Произошла ошибка, связанная с конкретным пакетом безопасности». Кроме того, если я настраиваю службу так, чтобы она требовала проверки подлинности Kerberos (вместо использования SNEGO / согласования), клиент даже не может позвонить на сервер (снова получая сообщение «Произошла ошибка, связанная с пакетом безопасности»).
Смущает то, что все работает без проблем годами. Однако здесь есть несколько отличий от того, что мы делали раньше. Во-первых, задействованные серверы работают под управлением Windows 2008, которую я ранее не использовал. Кроме того, как отмечалось выше, ошибки возникают только тогда, когда к службе обращаются из учетной записи из отдельного домена, и предыдущее использование никогда не пыталось это сделать.
Теперь к вопросу: я не использую SPN (имя участника-службы) для этой службы DCOM, но некоторые ошибки и журналы событий заставляют меня думать, что это может быть проблемой. Однако во всех найденных мною документах неясно, правильно ли это, и как я бы настроил SPN, если он мне действительно нужен. Кто-нибудь знает наверняка, что мне здесь не хватает SPN? Если да, не могли бы вы указать мне, как это должно быть сделано?
Дополнительная информация:
Для сценария, когда сервер настроен на принудительную проверку подлинности Kerberos, включение Расширенная отладка RPC дает некоторые дополнительные подсказки. Клиент может успешно подключиться с помощью CoCreateInstanceEx, но вызовы интерфейса службы завершаются ошибкой, как указано выше. В записях об ошибках RPC отображается ошибка в местоположении 140, код ошибки - 0x80090303 («Указанная цель неизвестна или недоступна»), а третий параметр для этой записи - пустая строка. Это указывает на отсутствие SPN как на виновника.