Hoy os vamos a enseñar a federar de la forma más sencilla posible vuestras aplicaciones con el nuevo phpPoA2. Lo primero que debéis hacer es descargaros la última versión desde la forja de RedIRIS, descomprimirlo en vuestro servidor y aseguraros de que vuestros scripts en PHP pueden acceder a él. En primer lugar, debéis configurar el PoA. La librería está diseñada de forma que un único fichero de configuración sea suficiente para configurar el PoA múltiples aplicaciones, así que debéis incluir una sección general en vuestro fichero PoA.conf:
$poa_cfg = array(
'LogFile' => '/var/log/poa.log',
'Debug' => false,
'LogLevel' => E_USER_ERROR,
'Language' => 'es_ES',
'NoAuthErrorURL' => 'http://www.miweb.es/error.php?status=403',
'SystemErrorURL' => 'http://www.miweb.es/error.php?status=503',
'InviteErrorURL' => 'http://www.miweb.es/null/error.php?status=503',
'AuthnEngine' => 'PAPIAuthnEngine',
); |
$poa_cfg = array(
'LogFile' => '/var/log/poa.log',
'Debug' => false,
'LogLevel' => E_USER_ERROR,
'Language' => 'es_ES',
'NoAuthErrorURL' => 'http://www.miweb.es/error.php?status=403',
'SystemErrorURL' => 'http://www.miweb.es/error.php?status=503',
'InviteErrorURL' => 'http://www.miweb.es/null/error.php?status=503',
'AuthnEngine' => 'PAPIAuthnEngine',
);
Si esta configuración por defecto no es suficiente para vuestra aplicación o queréis modificar algún parámetro, basta con que los cambiéis en una sección específica para vuestra aplicación, que en caso contrario será igual que la general:
$poa_cfg['miaplicacion'] = $poa_cfg; |
$poa_cfg['miaplicacion'] = $poa_cfg;
Una vez configurado el PoA en cuanto a sus opciones más básicas, debemos configurar la autenticación. El phpPoA, por su arquitectura modular, soporta distintos protocolos tanto de autenticación como de autorización, y viene con algunos por defecto. Con la distribución por defecto, la autorización se realizará mediante el motor de autenticación PAPI, y la podréis configurar en el fichero PAPI.conf:
$papi_cfg = array(
'Location' => dirname($_SERVER['SCRIPT_NAME']),
'CookieDomain' => $_SERVER['SERVER_NAME'],
'CookieTimeout' => 3600,
'LKey' => 'examplekey',
'PubKeyFile' => 'pubkey.pem',
'DBType' => PAPI_DBA,
'DBFile' => '/var/spool/db/requests.db4',
'RedirectURL' => 'http://www.rediris.es/SIRGPoA/papiPoA',
'RedirectType' => GPOA_T
); |
$papi_cfg = array(
'Location' => dirname($_SERVER['SCRIPT_NAME']),
'CookieDomain' => $_SERVER['SERVER_NAME'],
'CookieTimeout' => 3600,
'LKey' => 'examplekey',
'PubKeyFile' => 'pubkey.pem',
'DBType' => PAPI_DBA,
'DBFile' => '/var/spool/db/requests.db4',
'RedirectURL' => 'http://www.rediris.es/SIRGPoA/papiPoA',
'RedirectType' => GPOA_T
);
Al igual que en la configuración general del PoA, ésta es una configuración por defecto que podréis adaptar a las necesidades de vuestra aplicación, simplemente sobreescribiendo los parámetros por defecto que necesitéis. Recordad que siempre debéis definir una sección correspondiente a vuestra aplicación o el phpPoA se quejará de un error de configuración.
$papi_cfg['miaplicacion'] = array(
'CookieTimeout' => 1800,
'Location' => '/miaplicacion'
); |
$papi_cfg['miaplicacion'] = array(
'CookieTimeout' => 1800,
'Location' => '/miaplicacion'
);
Y ya sólo queda lo más fácil, usarlo desde vuestra propia aplicación:
include("PoA.php");
$poa = new PoA("miaplicacion");
$auth = $poa->authenticate();
if ($auth) { // usuario autenticado
} else { // ocurrió un error y el usuario no está autenticado
} |
include("PoA.php");
$poa = new PoA("miaplicacion");
$auth = $poa->authenticate();
if ($auth) { // usuario autenticado
} else { // ocurrió un error y el usuario no está autenticado
}
Fácil, ¿verdad?