2008-10-02 15 views
21

Tenemos servicios web SOAP en producción que se basan en encabezados SOAP (que contienen credenciales de cliente simple) para la autenticación. Los WS se utilizan en entornos heterogéneos con clientes .NET/Java/PHP/Python/C++ tanto en la aplicación web como en la aplicación de escritorio.Autenticación de servicios web: ¿prácticas recomendadas?

Estamos considerando un v2 para esos WS y me pregunto cuáles son las mejores prácticas para la autenticación WS SOAP? (razonablemente seguro, pero fácil de manejar en una amplia variedad de plataformas).

Respuesta

15

La manera más fácil de manejarlo en una variedad de plataformas es utilizar autenticación HTTP básica y HTTPS para la capa de transporte. WS-Security sería bueno si sus necesidades van más allá del simple nombre de usuario/contraseña, pero el soporte va a variar bastante entre las plataformas. La autenticación HTTP es compatible con todas las implementaciones decentes de SOAP.

4

Si tiene que enrollarlo todo usted mismo y no puede usar HTTPS, sugeriría la porción de UsernameToken basada en hash de WS-Security. Es bastante seguro y bastante fácil de implementar, siempre y cuando sus bibliotecas tengan las funciones de hash.

Si está haciendo servicios web, no confiaría en HTTP para la autenticación.

WS-Security en su conjunto es demasiado grande.

+1

¿Por qué no confía en la autenticación HTTP existente, esto es solo si NO PUEDE usar https? – Xailor

+0

@Xepoch están hablando de autenticación básica donde el nombre de usuario y pwd se enviaron como encabezado de soap? – Mou

+0

@David, por favor dígame cómo implementar la porción "basada en hash UsernameToken de WS-Security". ¿Puede darme algún enlace desde donde pueda leer código y descargar código para ejecutar en mi pc? Gracias – Mou

2

La forma en que he abordado esto en el pasado es utilizar las características WS- * estándar.

En lugar de utilizar la función de autenticación, configuramos la función de integridad del encabezado del mensaje. Esto requiere que ambos lados del diálogo tengan acceso al par de claves pública/privada y detecta cualquier alteración del campo de nombre de usuario en el encabezado. De modo que puede estar seguro de que quien envió el mensaje y configuró la identificación de usuario tiene acceso a la clave privada.

Esto proporciona un nivel razonable de integridad si las claves se gestionan correctamente.

Cuestiones relacionadas