Итак, я буду первым, кто признает, что я мало знаю о внутренностях WS-Security. У меня есть фабрика сервисов SOAP как ниже. При использовании этой службы с внутренними клиентами .NET, предназначенными только для тестирования (с использованием автоматически сгенерированного прокси-класса .cs через svcutil.exe + автоматически сгенерированный WSDL), все в порядке. Я вижу первые 4 пары согласования запроса-ответа безопасности SOAP до 5-й «фактический» (зашифрованный) SOAP-запрос/ответ. Я понимаю безопасность в целом, но хотел бы я знать подробности об этом конкретном рукопожатии — я полагаю, они выполняют обмен ключами?
Во всяком случае, отчасти потому, что
. должен выполнять обмен SOAP через базовую аутентификацию HTTPS + HTTP. Итак, вопросы сводятся к следующему:
Дополнение к предыдущему : Как мне настроить фабрику сервисов на рекомендуемые параметры? Излишне говорить, что я хочу держаться подальше от проверки подлинности Windows, которая бессмысленна в интернет-среде...
открытый класс SoapServiceHostFactory : ServiceHostFactory
{
частный тип serviceInterfaceType;
public SoapServiceHostFactory (тип serviceInterfaceType)
{
this.serviceInterfaceType = serviceInterfaceType;
}
защищенное переопределение ServiceHost CreateServiceHost (тип serviceType, Uri [] baseAddresses)
{
Хост ServiceHost = base.CreateServiceHost (serviceType, baseAddresses);
ServiceMetadataBehavior smb = host.Description.Behaviors.Find();
// Включить метаданные
если (что-то == ноль)
{
smb = new ServiceMetadataBehavior();
host.Description.Behaviors.Add(smb);
}
smb.HttpGetEnabled = истина;
// Включить отладку для сервиса
ServiceDebugBehavior sdb = host.Description.Behaviors.Find();
если (sdb == ноль)
{
sdb = новый ServiceDebugBehavior();
host.Description.Behaviors.Add(sdb);
}
sdb.IncludeExceptionDetailInFaults = истина;
// Конфигурация безопасности SOAP
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Transport;
хозяин.AddServiceEndpoint (serviceInterfaceType, myBinding, "");
вернуть хозяина;
}
}