Integración mediante PAPI usando EasyPoA
Dado que el SSO soporta el protocolo PAPI, puede usar un software como EasyPoA para integrar una aplicación PHP. Se puede descargar EasyPoA en formato tar.bz2.
Instalación
Tras descargar la última versión de EasyPoA, la descomprimiremos en cualquier directorio, como por ejemplo el propio de la aplicación:
# cd /var/www/app
# tar xjf EasyPoA-1.1.0.tar.bz2
# cd EasyPoA-1.1.0/
Configuración
EasyPoA busca la configuración en la ruta ../conf/PAPIPoA.ini, por lo que en fichero deberemos configurar los parámetros de la integración:
[Global]
Lcook_Timeout = 60
URL_Timeout = 200
GPoA_URL = https://ssopre.us.es/PAPI/gpoa.php
Pubkeys_Path = /var/www/ruta/EasyPoA/cert
Attribute_Separator = ","
Value_Separator = "|"
LogLevel = PEAR_LOG_DEBUG
LogFile = /ruta/fichero/log
[miaplicacion]
Location = /miruta
En este fichero de configuración cabría destacar varias opciones:
- GPoA_URL: se ha usado la URL del entorno de preproducción (véase el epígrafe PAPI en la sección "Servicio").
- Pubkeys_Path: ruta absoluta donde EasyPoA debe buscar el certificado. El certificado que EasyPoA espera se puede descargar de la sección "Servicio", teniendo en cuenta que cada entorno utiliza un certificado distinto.
- LogLevel: nivel de registro. Podemos usar inicialmente el nivel PEAR_LOG_DEBUG, pero si no queremos que el log crezca mucho se podría escoger otro de la lista de niveles.
- LogFile: ruta al fichero donde se almacenará el registro de eventos de la biblioteca.
- [miaplicacion]: nombre interno de la aplicación.
- Location: ruta relativa desde el acceso por HTTP a la aplicación.
Configuración del certificado
El siguiente paso consistirá en colocar el certificado del sistema SSO en la ruta en la que EasyPoA lo espera encontrar, que es la que se configuró en el parámetro Pubkeys_Path.
Descargaremos de la sección Servicio el certificado que corresponda al entorno que vamos a usar, y lo colocamos en el directorio indicado en Pubkeys_Path con el nombre _GPoA_pubkey.pem.
Solicitud de alta
En la solicitud de alta deberemos indicar bajo qué URL se encuentran los recursos protegidos, utilizando comodines. Por ejemplo, https://miaplicacion.us.es/app/* sería válida.
Uso de la biblioteca
En la biblioteca hay tres métodos principales:
- checkAccess(): comprueba la sesión actual del usuario, y en caso de no tenerla lo redirige al SSO.
- getUserData(): recoge todos los atributos del usuario actual.
- signOffRequest(): cierra la sesión del usuario actual.
Para poder usarlos hay que instanciar la clase EasyPoA, indicando como único argumento el nombre interno que configuramos en el fichero PAPIPoA.ini. En la sección anterior utilizamos como nombre miaplicacion.
Un ejemplo de uso sería el siguiente:
<?php
require_once 'EasyPoA/src/autoload.easypoa.php';
$poa = new EasyPoA('miaplicacion');
if ($poa->checkAccess()) {
$atributos = $poa->getUserData();
echo '<pre>';
var_dump($atributos);
}
// Si no está autenticado, no hacemos nada, dejamos que la redirección tenga efecto
Hay que tener en cuenta que una vez autenticado, el usuario es devuelto a la misma URL de la que provenía. Sucede lo mismo con el cierre de sesión.