Estoy diseñando una API para una aplicación móvil, y espero mantenerla RESTful.
Las API están autorizadas mediante autenticación HTTP básica, sin embargo, cuando el usuario abre la aplicación por primera vez, necesita iniciar sesión primero, por lo que debo diseñar una API para verificar las credenciales del usuario, que aceptará un nombre de usuario y contraseña, devuelve el éxito o falla en consecuencia.
el problema es qué debería ser la url así que es tranquilo? No creo/inicio de sesión es bueno.¿Cómo diseñar una API RESTful para verificar las credenciales del usuario?
Respuesta
Un buen enfoque es realizar una solicitud GET
para la información de cuenta/perfil del usuario actual. y hacer que devuelva el nombre de usuario, la configuración, la url de avatar, etc. me
es un identificador de taquigrafía que se utiliza con frecuencia del usuario que realiza la autenticación.
GET https://api.example.com/profiles/me
HTTP/1.1 200 OK
{
"username": "bob",
"id": "xyz",
"created_at": 123,
"image_url": "https://example.com/bob.png"
}
de Wikipedia:
La comunicación cliente-servidor es aún menor debido ningún cliente contexto se almacenan en el servidor entre las peticiones. Cada solicitud desde cualquier cliente contiene toda la información necesaria para atender la solicitud , y cualquier estado de sesión se guarda en el cliente.
Debido a que el servidor almacena ningún estado de sesión del cliente, su API no debería exponer ninguna capacidad de conexión/desconexión: En cada petición debe enviar las credenciales de usuario y el servidor de ellas debe validar cada vez.
Compruebe this discussion in SO, claryfies este concepto.
Estoy de acuerdo con Carlos: en una API normal y tranquila, no hay sesión, por lo que no puede autenticarse una vez y volver a usar la sesión, en realidad necesitaría pasar el conjunto de credenciales en cada llamada (no ideal).
En este escenario, parece que sería mejor usar uno de los openAuth (http://www.oAuth.net) - esto funciona autenticando cuando la aplicación se ejecuta por primera vez y luego generando un token de acceso para permitir acceso dentro de cada llamada (+ un token de actualización).
(se podría argumentar que el token de acceso es el estado, lo que es, sin embargo, al menos en general es mucho más duradero).
Por lo general, se considera una práctica deficiente para pasar datos confidenciales mediante una solicitud de HTTP GET
.
La información de contraseñas es información sensible y es una de las excepciones que infringe la regla de que idempotent operations debe ser solicitudes.
¿Por qué es esto una excepción? El historial del navegador y los registros del servidor almacenarán las solicitudes GET
. Lo que significa que esta información sensible es visible como texto sin formato en ambos lugares. Entonces, si alguien se apodera de cualquiera de los dos, esa información ahora está en sus manos.
Debe usar una solicitud HTTP POST
para pasar esta información confidencial a la API RESTful ya que los navegadores no las almacenarán y los servidores no las registrarán. Sin embargo, la primera línea de defensa es usar HTTP seguro (HTTPS) para garantizar que esta información esté protegida de terceros.
Así que pase esta información en el cuerpo de una solicitud HTTP a una URL HTTPS.
GET https://api.example.com/auth
Con juego de cabecera de Autorización.
- 1. Proporcionar las credenciales de forma segura a una API RESTANTE
- 2. ¿Cuáles son las mejores prácticas para diseñar una API pública RESTful en Rails?
- 3. ¿Cómo debería diseñar una URL RESTful para validar un objeto
- 4. WCF + Credenciales del usuario
- 5. Mimetypes para una API RESTful
- 6. ¿Cómo obtener las credenciales API de paypal?
- 7. ¿Hay una API (RESTful) para las páginas man de linux?
- 8. Diseñar una API web: ¿Cómo autenticar?
- 9. API RESTful: ¿requiere una cadena de agente de usuario?
- 10. Android Llavero para credenciales de usuario
- 11. Credenciales de API de PayPal para sandbox
- 12. ¿Cómo modelar una API RESTful con herencia?
- 13. ¿Cómo especificar las credenciales de usuario para una aplicación de hacer clic una vez?
- 14. Cómo diseñar una API C++ para la extensibilidad compatible binaria
- 15. ¿Cómo guardar las credenciales de inicio de sesión de usuario usando la API de PhoneGap?
- 16. ¿Cómo guardo y recupero las credenciales del administrador de credenciales de Windows Vault?
- 17. ¿Cómo diseñar una API pública en ASP.Net?
- 18. ¿Tiene Netsuite una API RESTful?
- 19. Verificar usuario a través de la API GetVerifiedStatus de PayPal
- 20. RESTful diseño de API con asociaciones
- 21. RESTful Zend Framework API
- 22. Escribiendo un cliente para una API RESTful (hipermedia)
- 23. ¿Cómo cambiar las credenciales de usuario en Subclipse?
- 24. ¿Cómo diseñar y verificar sistemas distribuidos?
- 25. Necesito una idea para una implementación RESTful del API de inventario para un juego de rol
- 26. ¿Cómo diseñar una puerta de enlace HTTP RESTful para un protocolo que requiere conexiones persistentes?
- 27. Consumir una API RESTful con Django
- 28. Interfaz gráfica de usuario para cURL para probar una API
- 29. Servicio de autenticación de usuario RESTful
- 30. CherryPy y RESTful web api
Sí, SOY la credencial establecida en cada llamada, sin embargo, necesito un inicio de sesión para verificar la credencial del usuario cuando abrieron la aplicación por primera vez – wong2
en realidad, no guardé una cookie de sesión ni nada parecido eso – wong2
Ok - así que supongo que debe estar pasando las credenciales * nombre de usuario/contraseña * con cada llamada es correcta. Usted necesita siempre pasarlo o pasarlo una vez y la pista de la sesión. – steve