Archivo

Archivo para Julio, 2010

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: ,