La mejor práctica para exponer varios puntos terminales cliente-específicas en un servicio WCF?

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

Pregunta

En el futuro, con el rediseño de una arquitectura de servicios web utilizando WCF, nuestro equipo ha estado discutiendo cómo queremos exponer los puntos finales. Ejemplo: Tengo un criterio de valoración estándar que todos los usuarios puedan utilizar con el token adecuado, pero también tengo cierto número de puntos finales que van a utilizar en lugar de seguridad certificado. Todos los puntos finales serán en última instancia utilizan la misma aplicación, por lo que este es en realidad diferentes maneras de conseguir en el sistema.

Los criterios de valoración de certificado tendrá que apuntan a un certificado específico en la tienda también lo hará único trabajo para un cliente específico. La idea es que nuestro servicio estándar podría vivir en http://mysite.com/MyService.svc y la los puntos finales de certificados serían algo así como http://mysite.com/MyService.svc/Acme . La preocupación aquí es que estoy poniendo efectivamente nuestra lista de clientes a nuestro WSDL, lo cual no es deseable.

¿Cuál es la mejor práctica aquí? ¿Hay una manera de dirigir varios clientes a través de un solo punto final certificado y obtener el certificado en el lado de código (¿cómo podríamos saber qué cliente que estamos tratando con y sin un punto final específico)? ¿Cuál es la mejor manera de ocultar que la lista de clientes? ¿Hay una solución totalmente mejor que no estoy viendo?

¿Fue útil?

Solución

No es necesario para crear criterio de valoración separada para cada cliente. Crear solo punto final con la autenticación basada en certificado de cliente y poner en práctica su propia X509CertificateValidator con su propia lógica de autenticación.

Otros consejos

Configurar su comportamiento en servicio como:

       <behavior name="CertBeh">

            <serviceCredentials>

                <clientCertificate>

                    <authentication certificateValidationMode="PeerTrust" />

                </clientCertificate>

            </serviceCredentials>

        </behavior>

PeerTrust dice WCF para ver si los certificados proporcionados por los clientes están en el almacén TrustedPeople. Así que ponga todos los certificados de cliente a la tienda en la caja donde se encuentra su servicio y se le multa. Ver este artículo para otras opciones posibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top