php - route - slim monolog
Asegurando una API REST y Slim Framework (1)
Soy bastante nuevo en las API de REST, y me doy cuenta de que hay bastantes preguntas ya publicadas. Sin embargo, leer estos me ha dejado más confundido sobre cómo manejar esto.
He creado una API REST utilizando Slim Framework, que simplemente utilizo para transferir datos. No utilizaré el inicio de sesión o la autenticación del usuario, por lo que creo que para proteger esto solo necesito un sistema que use una clave pública y una clave privada, pero no estoy seguro.
Si alguien tiene una idea de la forma correcta / más segura de hacerlo, o de cualquier tutorial / recurso que sería genial. Cualquier ayuda es apreciada.
Puede utilizar SSL para cifrar los datos en tránsito.
Pero SSL es solo cifrado; ssl del lado del servidor no hace la autenticación del cliente, ni la autorización. ¿Puede pensar que la autorización responde a la pregunta si el autor de la llamada puede hacer lo que está preguntando? . La autenticación que establece la identidad de la persona que llama o la autenticación suele ser un primer paso necesario para realizar la autorización. A veces no necesita "toda la identidad", solo necesita establecer un aspecto particular. Por ejemplo, una puerta de baño automatizada no tendría que saber quién era usted, pero solo si era hombre o mujer para determinar su identidad. De la misma manera, a algunos servicios no les importa quién eres; Permitirán el acceso si está llamando desde una red particular (lista blanca de ip) o si lleva un token especial.
Para permitir que el servidor distinga entre llamadas autorizadas y no autorizadas, tiene algunas opciones:
IP lista blanca. Si conoce la dirección IP de la aplicación o el agente que llamará a su servicio, puede especificarlo en su implementación de servicio. El servicio puede verificar la IP de las solicitudes entrantes y rechazar aquellas que no están en la lista blanca. Esto es una especie de autorización "implícita" basada en la dirección de la persona que llama.
un token secreto, que la aplicación proporciona en cada llamada. Usted dijo que no quería hacer la autenticación, pero esta es una forma de autenticación. Podría llamarlo un "token de portador". Cualquiera que lleve este token obtiene autorización. En su servidor, verificará el valor del token y rechazará cualquier llamada que no coincida con el valor conocido. Esto funciona de manera muy similar a la lista blanca de IP, excepto que el token se pasa explícitamente y no tiene ninguna relación con la dirección de red.
un token + par de teclas. Esto es como un nombre de usuario / contraseña, pero se puede usar para autenticar la aplicación. Utilice esto para proporcionar la identidad de la aplicación en sí. Compruebe en el lado de servicio como se indica arriba.
un nombre de usuario / contraseña. Para autenticar al usuario de la aplicación.
Es posible que desee combinar estos para producir la solución que desea. En otras palabras, la solicitud del cliente debe ser de la dirección correcta, y debe tener un token / clave para la aplicación, y un nombre de usuario / contraseña para el usuario, para que se considere "autorizado".