Аутентификация сертификата WCF без установки на клиент - PullRequest
3 голосов
/ 21 августа 2009

Наша установка включает в себя службу WCF и ряд клиентов, написанных нами. Некоторые клиенты включают приложения Silverlight, а другие - веб-приложения и приложения Windows.

Я (думаю) хотел бы аутентифицировать клиентов на основе сертификатов X.509. Обычно вы устанавливаете закрытый ключ на клиенте для шифрования (или цифровой подписи) сообщений. Сервер может использовать открытый ключ клиента, чтобы дешифровать его, чтобы убедиться, что сообщение не было изменено, и доказать, что сообщение получено от того, кого мы ожидаем (также аутентифицировано).

Я не хочу устанавливать сертификат на клиентском компьютере. Это сложная задача для развертывания, и мы не можем просить наших клиентов сделать это. Я говорил с кем-то на днях, кто предложил ввести сертификат в сборку клиента, прочитать его и использовать это. Это возможно?

Было бы здорово, если бы кто-нибудь показал мне пример.

Заранее спасибо,

David

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

Да, вы можете загрузить X509certificate2 , передав байтовый массив сертификата с паролем типа

var certificate = new X509Certificate2(theByteArrary, "password");

Чтобы получить массив байтов сертификата, вы можете просто скопировать и вставить содержимое в файл .pfx, который является комбинацией .cer (открытый ключ) и .pvk (закрытый ключ)

и затем вы можете загрузить этот сертификат на свой клиент, выполнив:

var channelFactory = new ChannelFactory<IYourService>();
channelFactory.Credentials.ClientCertificate.Certificate = 
                                         clientCertificate;

Если вы используете автоматически сгенерированный клиентский прокси или предпочитаете настраивать сертификат через файл .config, то вам может понадобиться посмотреть это из codeproject

1 голос
/ 21 августа 2010

Вот предложение. Также можно настроить для использования встроенного сертификата.

http://www.codeproject.com/KB/WCF/wcfcertificates.aspx

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