Subject: | |
Emisor: | |
Reply To: | |
Fecha: | Fri, 30 Jul 2010 11:23:34 +0200 |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
Buenas,
No hace mucho tiempo 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);
Un saludo,
--
Jaime Pérez
Middleware Engineer
RedIRIS National Research and Development Network
pgp: CD22D621
web: http://www.rediris.es
xmpp: [log in para visualizar]
blog: http://blog.rediris.es/middleware
|
|
|