Autenticación via OpenID
Requisitos
Toba 2.3+
Una operación de login actualizada. Se puede regenerar ejecutando el comando
toba proyecto actualizar_login
. Notar que cualquier modificación a la operación de login original necesita ser re-aplicada al nuevo loginPor requisitos de la librería utilizada( Poidsy ) es necesario tener activada la configuración
allow_url_fopen
en el php.ini
Activación
Editar el archivo instalacion/instalacion.ini
y cambiar esta
configuración:
autenticacion = openid
Configuración
Todas las configuraciones se encuentran comentadas en el archivo instalacion/openid.ini
Las mas destacadas son:
campo_usuario
: Indica que campo configurado mas abajo es el que se va utilizar como campousuario
en la tablaapex_usuario
de toba. Esto es de suma importancia ya que a pesar que la autenticación se hace remotamente por el Provider, toba necesita que exista este registro en la tabla.crear_usuario
: En el caso que el usuario suministrado por el Provider no exista en la tablaapex_usuario
lo crea, esto permite registrarse al sistema. Si se desactiva asegurarse de crear los usuarios manualmente viatoba_usuarios
para permitir el login del mismopermite_login_toba
: Permite hacer un mix entre la autenticación tradicional y la de openid. Por ejemplo los administradores podrían loguearse usando usuario-contraseña para no depender de un servicio remoto
Cambios al comportamiento
Como cualquier otro mecanismo de autenticación, es posible crear una variante propia extendiendo la clase base y asignarla en el contexto de ejecución:
$autenticacion = new mi_autenticacion();
toba::manejador_sesiones()->set_autenticacion($autenticacion);
Por ejemplo se podría optar matchear el ID de usuario contra el campo
mail
en lugar del campo usuario
Conexión con SimpleSAMLphp
Si se utiliza un Service Provider con SimpleSAMLphp que actua como
OpenID provider, además de la configuración detallada anteriormente se
debe cambiar la siguiente sentencia en el archivo
\simplesamlphp\modules\openidProvider\lib\server.php
:
$ax_resp->toMessage($response->fields);
por:
$ax_resp->toMessage($response->fields, $ax_req);
Esto permite que los atributos generados en la respuesta coincidan con los solicitados en el requerimiento de datos.