Tengo una API de servicio web relajante, que está siendo utilizada por terceros diferentes. Parte de esa API está restringida (se necesita nombre de usuario/contraseña para acceder a ella). Me preguntaba ¿cuál sería la mejor forma de implementar la autenticación?Autenticación razonable del servicio web
Estoy usando https, por lo que la comunicación está encriptada. Tengo dos ideas:
- Antes de que el usuario comience a usar el servicio (restringido), envía un nombre de usuario/contraseña usando POST (desde que se usan las credenciales https). Después de que el inicio de sesión sea exitoso, el servidor devuelve un valor aleatorio de un solo uso (nonce) que coincide con este nombre de usuario. Cuando se realiza la próxima solicitud, junto con un nombre de usuario, el cliente envía el código de acceso devuelto previamente. Los servidores coinciden con el nombre de usuario y el nonce y devuelven el nuevo nonce junto con los datos solicitados. Cada nueva solicitud usa new nonce. Básicamente, esta es una versión ligera de autenticación de acceso Digest.
- Dado que esta API se utiliza de un tercero, el nombre de usuario/contraseña se podría usar para cada solicitud (restringida). Como https se está utilizando, se cifrarán. La caída de este enfoque es el hecho de que esto no cumpliría con Restful (el POST se usaría siempre).
Estoy mucho más cerca de elegir el primer enfoque (es compatible con Restful, es relativamente fácil de implementar, XML, json o html se puede usar sin cambiar nada), pero quería ver cuál es su opinión? ¿Qué recomienda: primero, segundo o algún tercer enfoque?
Btw, estoy usando Python en el lado del servidor.
La mejor respuesta por cualquier medida. ¡Si pudieras dar una buena introducción al algoritmo aquí mismo, estoy seguro de que obtendrías toneladas de votos en muy poco tiempo! Creo que uno de los aspectos más importantes es este: "Primero usa su clave de acceso secreta para crear una clave de firma. La clave de firma tiene un alcance en una región y servicio específicos. Además, la clave de firma expira siete días después de la creación. el alcance y el tiempo de vida de la clave de firma son limitados, sus datos corren menos riesgo si la clave de firma se ve comprometida ". – Domi