Лучшая практика для разоблачения нескольких клиентских конечных точек в службе WCF?

StackOverflow https://stackoverflow.com/questions/3813656

Вопрос

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

Конечные точки сертификата должны будут указывать на конкретный сертификат в магазине, поэтому будет работать только для одного конкретного клиента. Мысль заключается в том, что наша стандартная служба может жить в http://mysite.com/myservice.svc. и конечные точки сертификата были бы что-то вроде http://mysite.com/myservice.svc/acme.. Отказ Концерн вот в том, что я эффективно вкладываю на наш список клиентов в наш WSDL, который не желательна.

Какая лучшая практика здесь? Есть ли способ поправить несколько клиентов через единую конечную точку сертификата и получить сертификацию на стороне кода (как бы мы узнали, какой клиент мы имеем дело без определенной конечной точки)? Какой лучший способ скрыть этот список клиентов? Есть ли совершенно лучшее решение, которое я не вижу?

Это было полезно?

Решение

Вам не нужно создавать отдельную конечную точку для каждого клиента. Создайте одну конечную точку с аутентификацией на основе клиентского сертификата и реализовать свой собственный X509CertificateValidator. С вашей собственной логикой аутентификации.

Другие советы

Настройте свое поведение обслуживания, как:

       <behavior name="CertBeh">

            <serviceCredentials>

                <clientCertificate>

                    <authentication certificateValidationMode="PeerTrust" />

                </clientCertificate>

            </serviceCredentials>

        </behavior>

Peertreust говорит WCF посмотреть, если сертификаты, предоставленные клиентами, находятся в магазине TrustedPeople. Поэтому наберите все клиентские сертификаты в магазин в поле, где находится ваш сервис, и все будет в порядке. Видеть эта статья Для других возможных вариантов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top