Pregunta

Me gustaría crear una arquitectura de servicio web que pueda ser llamada por varias plataformas como dispositivos móviles, aplicaciones winforms, iphone, blackberry, lo que sea. Entonces, ir con algo como el enlace WCF y wsHttp probablemente mata esto y necesitaría degradar a un enlace basicHttp para compatibilidad.

Dicho esto, necesito un sistema para generar un token en el inicio de sesión inicial (autenticación) y luego usar este token para todas las llamadas posteriores, 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) ¿Generar un token y qué implica un token seguro? 2) ¿Por cuánto tiempo es bueno el token? Algunos usuarios pueden usar su aplicación durante horas y posiblemente incluso "dormir". su computadora

Gracias por el consejo.

¿Fue útil?

Solución

Si solo usa un token que el servidor proporciona en la autenticación inicial, se puede usar para cualquier solicitud si se intercepta. Su ú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 en cada solicitud. Requiere que el cliente maneje las credenciales de autenticación, conozca la implementación de firma y firme cada solicitud.

Alternativamente, puede hacer que el servidor se autentique con cada solicitud (lo que podría hacerse con OpenID) o distribuir una cantidad 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 redireccionamientos HTTP y manejar cookies u otro estado almacenado. El cliente no tendría que saber firmar, pero si puede hacer SSL, probablemente no necesite la complejidad en primer lugar.

Si no necesita ser independiente del cliente, probablemente quiera firmar solicitudes.

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

Con respecto al tiempo de vencimiento del token, depende de sus necesidades. Una vida de ficha más larga aumenta los ataques de repetición de ventana. Un nonce hace un token de un solo uso, pero requiere más estado en el servidor.

Otros consejos

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

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