tokens tecnicas services seguros seguridad web-services security authentication authorization token

web-services - tecnicas - web services seguros



¿La mejor manera de crear un sistema TOKEN para autenticar las llamadas al servicio web? (2)

Deberías OAuth un vistazo a OAuth . Es un estándar para la autenticación de API, probablemente solo pueda conectar una implementación existente en su servicio.

Me gustaría crear una arquitectura de servicio web a la que puedan llamar varias plataformas, como dispositivos móviles, aplicaciones winforms, iphone, blackberry, lo que sea. Así que ir con algo como enlaces WCF y wsHttp probablemente lo mate y tendría que pasar a una versión básica de enlace HTTP para compatibilidad.

Dicho esto, necesito un sistema para generar un token en el inicio de sesión (autenticación) y luego usar este token para todas las llamadas subsiguientes, supongo, para validar la autenticación y permitir que el método se ejecute.

¿Alguien tiene consejos o sugerencias sobre cómo hacer esto? 1) ¿Generas un token y qué implica un token seguro? 2) ¿Por cuánto tiempo es útil el token, algunos usuarios pueden usar su aplicación durante horas y posiblemente incluso "dormir" su computadora?

Gracias por el consejo.


Si solo está utilizando un token proporcionado por el servidor en la autenticación inicial, se puede usar para cualquier solicitud si se intercepta. Tu única defensa es el tiempo de vencimiento.

Más allá de eso, depende de cuáles sean sus opciones de implementación.

Un sistema más seguro es agregar una marca de tiempo (y posiblemente un nonce) a cada solicitud, firmarlo e incluirlo con cada solicitud. Requiere que el cliente maneje las credenciales de autenticación, conozca la implementación de la firma y firme cada solicitud.

De forma alternativa, puede hacer que el servidor se autentique con cada solicitud (lo que podría hacerse con OpenID) o distribuir un número de tokens y volver a autenticarse cuando se necesiten más (lo que podría hacerse con OAuth). Si el cliente puede almacenar credenciales, estas pueden ser invisibles para el usuario. Estos son más complejos, requieren un transporte encriptado como SSL para algunas de las interacciones, y un cliente que puede hablar sobre redireccionamientos HTTP y manejar cookies u otro estado almacenado. El cliente no debería saber cómo firmar, pero si puede hacer SSL, probablemente no necesite la complejidad en primer lugar.

Si no necesita ser independiente del cliente, es probable que desee firmar las solicitudes.

Para firmar implementaciones, ejemplos y bibliotecas, consulte Amazon Web Services, OpenID u OAuth.

En cuanto al tiempo de caducidad del token, depende de sus necesidades. Una vida de token más larga aumenta los ataques de reproducción de ventana. Un nonce hace un token de un solo uso, pero requiere más estado en el servidor.