Autor Tema: autenticacion api rest  (Leído 51 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Maxi

  • General
  • *
  • Mensajes: 136
    • MSN Messenger - maxisoad@hotmail.com
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Luján
  • Nombre y apellido: Pablo Maximiliano Lulic
  • Sistema: Guaraní - Kolla
  • Teléfono laboral: (02323) 423979/423171 int. 347
  • Utilizo algun sistéma del SIU: Sí
autenticacion api rest
« : mayo 17, 2019, 03:05:34 pm »
Hola, estuve buscando en la documentación de la librería [1], pero no encuentro como expandir el tema de la autenticación a los servicios REST (con digest funciona bien). Lo que necesito es permitir accesos a ciertas rutas según el usuario. Estoy trabajando con un proyecto de Toba, no con la libreria standalone.

Saludos
Maxi

[1] https://github.com/SIU-Toba/rest/

richard

  • Moderador Global
  • *****
  • Mensajes: 2576
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:autenticacion api rest
« Respuesta #1 : mayo 17, 2019, 03:45:24 pm »
Hola Maximiliano,
Hola, estuve buscando en la documentación de la librería, pero no encuentro como expandir el tema de la autenticación a los servicios REST (con digest funciona bien).
la libreria que usamos para servir rest tiene la posibilidad de que se le inyecten instancias de otras clases, con lo cual lo que podrias hacer es invocar lo siguiente y fijarle una instancia de la clase que quieras para que autentique.
Código: [Seleccionar]
rest::app()->set_autenticador(new clase())
Dicha clase solo debe extender SIUToba\rest\seguridad\proveedor_autenticacion e implementar algun metodo que falte o difiera.

Citar
Lo que necesito es permitir accesos a ciertas rutas según el usuario. Estoy trabajando con un proyecto de Toba, no con la libreria standalone.

Lo que necesitas entonces es un autorizador,  el usuario esta autenticado.. luego vos debes decidir si puede o no acceder a un recurso puntual, el mecanismo es similar al que te expuse anteriormente pero tenes que extender de la clase proveedor_autorizacion.

De todas maneras tene en cuenta que los usuarios de la api rest no necesariamente van a coincidir con los de Toba, por lo tanto aplicar una especie de perfil funcional sobre eso, va a requerir info aparte.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

Maxi

  • General
  • *
  • Mensajes: 136
    • MSN Messenger - maxisoad@hotmail.com
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Luján
  • Nombre y apellido: Pablo Maximiliano Lulic
  • Sistema: Guaraní - Kolla
  • Teléfono laboral: (02323) 423979/423171 int. 347
  • Utilizo algun sistéma del SIU: Sí
Re:autenticacion api rest
« Respuesta #2 : mayo 20, 2019, 02:29:17 pm »
El archivo que extiende de proveedor_autorizacion, donde lo coloco? en la carpeta rest? lo agrego al autoload?

la linea de
Código: [Seleccionar]
rest::app()->set_autenticador(new proveedor_autorizacion_unlu());
la tengo que poner en proyecto/www/rest.php despues de instanciar el núcleo?
Código: [Seleccionar]
toba_nucleo::instancia()->acceso_rest();

richard

  • Moderador Global
  • *****
  • Mensajes: 2576
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:autenticacion api rest
« Respuesta #3 : mayo 21, 2019, 11:51:55 am »
Hola Maxi,
El archivo que extiende de proveedor_autorizacion, donde lo coloco? en la carpeta rest? lo agrego al autoload?
Tiene que ser parte del proyecto, con lo cual deberia terminar en el autoload del mismo o en el de composer.

Citar
la linea de
Código: [Seleccionar]
rest::app()->set_autenticador(new proveedor_autorizacion_unlu());la tengo que poner en proyecto/www/rest.php despues de instanciar el núcleo?
Código: [Seleccionar]
toba_nucleo::instancia()->acceso_rest();
La colocas en el contexto de ejecucion del proyecto, hay un metodo conf__rest especifico para que puedas modificar el pedido.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

Maxi

  • General
  • *
  • Mensajes: 136
    • MSN Messenger - maxisoad@hotmail.com
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Luján
  • Nombre y apellido: Pablo Maximiliano Lulic
  • Sistema: Guaraní - Kolla
  • Teléfono laboral: (02323) 423979/423171 int. 347
  • Utilizo algun sistéma del SIU: Sí
Re:autenticacion api rest
« Respuesta #4 : mayo 21, 2019, 02:21:50 pm »
Genial! pude hacerlo funcionar. Comparto la solución:

Cree un archivo que extiende de SIUToba\rest\seguridad\proveedor_autorizacion

Código: [Seleccionar]
<?php

class proveedor_autorizacion_unlu extends \SIUToba\rest\seguridad\proveedor_autorizacion
{
    public function 
tiene_acceso($usuario$ruta){
    
return true;
    }
}

Cargué ese archivo en el autoload del proyecto

Código: [Seleccionar]
'proveedor_autorizacion_unlu' => 'rest/proveedor_autorizacion_unlu.php',
Y por último, en el archivo del contexto de ejecución [1], agregué lo siguiente:

Código: [Seleccionar]
function conf__rest($app){
    $app->set_autorizador(new proveedor_autorizacion_unlu());
}

Saludos
Maxi

[1] Si no existe en el proyecto, se define desde Configuración -> Propiedades -> Extensión del núcleo
« Última Modificación: mayo 21, 2019, 02:25:30 pm por Maxi »