it-swarm-es.tech

¿Cuál es la forma correcta de autenticar a un usuario?

Hace un par de años escribí un componente pequeño y muy incompleto que autenticaba a los usuarios que provenían de fuera de Joomla. es decir, una aplicación móvil.

¿Hay una forma adecuada o preferida de entregar esto?

7
Nestor Ledon

Según su comentario, está buscando una configuración OAuth. Hasta donde yo sé, Joomla tiene Oauth clases integradas en el núcleo, pero estas clases son para permitir que Joomla actúe como cliente (su aplicación móvil es un cliente en su caso). No le dan la opción de ejecutar como servidor.

Recientemente utilicé este paquete para configurar un servidor OAuth2 en Joomla Framework: https://github.com/bshaffer/oauth2-server-php . Funcionó muy bien. Definitivamente, esto llevará unos días para que todo esté configurado y funcionando, pero definitivamente puedes configurarlo en Joomla.

Hay un par de métodos diferentes para autenticar a un usuario dentro de OAuth2. El enfoque común es que el cliente redirija al usuario a su sitio para ingresar su información de inicio de sesión. Luego, redirige al usuario nuevamente al cliente con un código que el cliente convierte en un token de acceso.

Como parece que también controlas la aplicación móvil, esto es innecesario. Confía en el cliente (espero), por lo que puede hacer que el usuario inicie sesión en la aplicación.

A continuación, utilizaría la opción "Credenciales de propietario/contraseña del recurso" descrita aquí: http://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/ . Esto hace que la aplicación móvil solo envíe el usuario/contraseña ingresada a su sitio de Joomla, y luego el sitio de Joomla devuelve un token para su validación. El token se puede guardar y usar la próxima vez en lugar de volver a iniciar sesión.

Esto le da control en el sitio de Joomla para invalidar tokens y obligar a los usuarios móviles a iniciar sesión nuevamente.

5
David Fritsch

Puedes usar el siguiente código:

JFactory::getApplication()->login($credentials);

dónde:

$credentials = Array('username' => string, 'password' => string);
4
csbenjamin

Desea usar algo como OAuth/OAuth2. Mi idea aquí no es cierta OAuth pero basada en mi conocimiento de Joomla de la manera más fácil.

Valide al usuario a través de una llamada API al componente en Joomla para crear un token que esté conectado a su IP, luego rediríjalo con una solicitud GET que valide ese token y cree la sesión para ellos. El token es fácil de proteger, ya que se basa en la IP para autenticar al usuario ya autenticado, la mejor manera es asegurarse de que solo se pueda usar una vez. Para la llamada API, debe ser una solicitud SSL cifrada POST) para obtener los mejores resultados.

Por lo tanto, envíe una solicitud POST) a su componente que contenga la IP, el nombre de usuario y la contraseña del usuario. Si todo es válido, entonces devuelve un token. Luego, redirige al usuario a su componente que contiene ese token a configurar la sesión. No sé cómo se puede utilizar la API de Joomla para iniciar sesión en una persona, pero estoy seguro de que hay algo para ello.

Editar: Parece que la respuesta de csbenjamin ha entrado en la API para iniciar sesión.

3
Jordan Ramstad