Как получить WSDL службы WCF, чтобы сказать, что она требует базовой аутентификации? - PullRequest
0 голосов
/ 08 января 2010

У нас есть служба WCF, размещенная на IIS за прокси-сервером SiteMinder (из-за отсутствия лучшего термина).По сути, запросы поступают в SiteMinder по номеру https://public.domain.com/SOA/Service.svc с базовой аутентификацией http.SiteMinder проверяет аутентификацию, удаляет ее и отправляет запрос на http://internal.domain/SOA/Service.svc без аутентификации.

Это создает две проблемы при запросе службы WSDL:

  1. URL-адресав WSDL показывают http: вместо https:
  2. WSDL не упоминает о необходимости базовой аутентификации

Мне удалось решить проблему № 1, реализовавIWsdlExportExtension, который заменяет URL в методе ExportEndpoint (метод. Однако я не смог выяснить, как решить проблему # 2. Может ли кто-нибудь указать мне правильное направление?

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 января 2010

Я смог понять это. Мне нужно было использовать customBinding и предоставить свой собственный IPolicyExportExtension с этим в качестве реализации IPolicyExportExtension.ExportPolicy ():

void IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context) {
   XmlElement elem = doc.CreateElement("http", "BasicAuthentication", "http://schemas.microsoft.com/ws/06/2004/policy/http");
   context.GetBindingAssertions().Add(elem);
}
1 голос
/ 11 января 2010

Поскольку аутентификация не происходит в том случае, когда служба размещается, решение будет заключаться в том, чтобы вручную создать файл WSDL, а затем указать WCF сослаться на него, используя externalmetadatalocation .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...