Archivo

Entradas Etiquetadas ‘phpPoA’

phpPoA 2.4 disponible

miércoles, 13 de julio de 2011 Sin comentarios

Una nueva versión de la librería phpPoA, que permite conectar cualquier aplicación con el SIR (entre otras federaciones) está ya disponible en la forja. A grandes rasgos, estas son las novedades en esta versión:

  • Nuevo motor de autenticación basado en OpenID (gracias a Miguel Macías de la UPV).
  • Inclusión de algunos tutoriales básicos en la documentación del paquete.
  • Soporte de un nuevo atributo operacional en el motor de autenticación PAPI, para poder obtener la aserción completa emitida por el AS.
  • Soporte para la cabecera HTTP X-Forwarded-Port utilizada frecuentemente por proxies transparentes y balanceadores de tráfico. Esta opción es especialmente útil cuando la aplicación se encuentra detrás de un balanceador de tráfico que se encarga de servir los contenidos SSL en lugar del propio servidor web.
  • Varios bugfixes, fundamentalmente en el motor de autenticación PAPI y en el motor de autorización basado en URLs.
Categories: PAPI, SIR Tags: ,

Atributos operacionales en PAPI/SIR con el phpPoA2

viernes, 30 de julio de 2010 Sin comentarios

No hace mucho tiempo, en el equipo del SIR estuvimos hablando sobre la posibilidad de incluir atributos en la aserción que no fuesen estrictamente atributos del usuario, sino atributos relativos al protocolo o incluso a la operación concreta de la federación, como por ejemplo, un atributo que indique si el usuario ha expresado ya su consentimiento para entregar el resto de atributos a un PoA PAPI. Esto es lo que dimos en llamar «atributos operacionales«.

Pues bien, desde ayer tenemos en el phpPoA2 una primera implementación que da soporte a este tipo de atributos. La idea es que como la reimplementación del PoA en PHP soporta espacios de nombres en los atributos, dependiendo del espacio de nombres se puede pedir al PoA que entregue un atributo operacional en lugar de un atributo del usuario. De momento, y a falta de confirmación, existen dos espacios de nombres autoexplicativos:

urn:mace:rediris.es:papi:protocol
urn:mace:rediris.es:papi:attributes

De esta forma, se le puede solicitar un atributo operacional al phpPoA2 con el método getAttribute(), indicando el nombre del atributo y el espacio de nombres del protocolo (codificado con la constante NS_PAPI_PROTOCOL). De momento he diferenciado los atributos operacionales con un prefijo «_papi_» delante del nombre del atributo, pero esto puede cambiar. Para pedir el atributo no es necesario incluir el prefijo.

Así mismo, se han incluido otra serie de parámetros dentro del espacio de nombres de atributos operacionales. Son los siguientes:

PROTO_ATTR_AS_ID: el identificador del AS que ha autenticado al usuario. Se corresponde con el tradicional «@xxxxx» que cierra una aserción PAPI.
PROTO_ATTR_KEY: el identificador de la transacción PAPI por la cual se autentica al usuario.
PROTO_ATTR_EXPIRE_TIME: el tiempo unix en el que caduca la autenticación para el usuario actual.

A modo de ejemplo, obtener el identificador del AS que autenticó al usuario, es tan sencillo como:

$poa = new PoA("app");
$poa->authenticate();
$id = $poa->getAttribute(PROTO_ATTR_AS_ID, NS_PAPI_PROTOCOL);
Categories: PAPI, SIR Tags: ,

Autenticación básica con el phpPoA2

martes, 11 de mayo de 2010 1 comentario

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',
);


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;

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
);

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'
);

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
 
}

Fácil, ¿verdad?

Categories: PAPI Tags: ,

Ya disponible el nuevo phpPoA2

martes, 11 de mayo de 2010 Sin comentarios

El phpPoA es una implementación muy ligera del protocolo de federación PAPI que permite conectar la gestión de identidad en aplicaciones escritas en el lenguaje PHP de forma sencilla y descentralizada.

En concreto, PAPI es el protocolo que se utiliza en la federación española SIR (Servicio de Identidad de RedIRIS). Mediante la librería phpPoA conectar una aplicación con la federación es se reduce a algo tan simple como un par de líneas de código PHP.

Podéis encontrar esta nueva versión en la forja de RedIRIS y descargaros la última imagen del código. Aún no disponemos de un paquete distribuible para esta nueva versión, pero estamos trabajando en ello. En lo sucesivo os iremos dando pequeñas recetas y trucos de uso y configuración del phpPoA para que le saquéis el máximo partido en vuestras aplicaciones web.

Categories: PAPI, SIR Tags: