У меня проблема с Windows Azure ACS, и я не могу определить, должно ли это быть так, или если в моем коде есть ошибка.Вызов доверенной стороны через HTTPS и шифрование токена
У меня есть несколько полагающихся сторон, настроенных в ACS, и все они настроены с помощью HTTPS. Каждая служба настроена таким образом, что требуется шифрование Token. Для этого я загрузил сертификат, созданный с помощью MakeCert.exe.
Когда клиент взаимодействует с проверяющей стороной, я добавляю публичную часть сертификата в качестве служебного удостоверения и добавить имя субъекта как DnsIdentity:
var identity = EndpointIdentity.CreateDnsIdentity(GetClientCertificateSubjectName());
var serviceEndpointAddress = new EndpointAddress(new Uri(_serviceAddress), identity);
// Creation of channel factory
if(channelFactory.Credentials != null) {
channelFactory.Credentials.ServiceCertificate.DefaultCertificate = GetClientCertificate();
channelFactory.Credentials.ClientCertificate.Certificate = GetServiceIdentityCertificate();
}
Вот вещь: когда я называю полагаясь на HTTPS, я могу пропустить создание EndpointIdentity
, а затем полагающаяся сторона даст мне правильный ответ. Я также могу пропустить установку свойства ServiceCertificate.DefaultCertificate
или установить абсолютно случайный сертификат, и полагающаяся сторона все равно даст мне правильный ответ.
При вызове через HTTP выполнение любого из вышеперечисленных действий приведет к ошибке ACS с сообщениями, указывающими, что я не использовал правильные сертификаты. Короче говоря: при вызове через HTTP я могу общаться только с правильным сертификатом клиента. Я ожидал, что это также относится к HTTPS.
Я могу себе представить, что ChannelFactory<T>
или ACS достаточно умен, чтобы обнаружить, что HTTPS используется, и что сконфигурированное шифрование пропускается в пользу шифрования SSL. К сожалению, я не могу найти документацию, которая поддерживает эту идею.
Мой вопрос: нормально ли игнорировать EndpointIdentity
и сертификаты при вызове полагающейся стороны по протоколу HTTPS? Или мне нужна дополнительная настройка, чтобы сделать эту работу?
Заранее благодарен!