Servicio de Informática y Comunicaciones - Universidad de SevillaUniversidad de SevillaSIC

HTML5

CSS3

SSO: API PAPI EasyPOA

Integración con SSO

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.