2010-03-11 13 views

Respuesta

17

sreg se escribió como la cosa más simple que podría funcionar, y tiene un conjunto muy limitado de campos disponibles. Pero como eso incluye nickname, email y fullname, a menudo es todo lo que necesita.

El intercambio de atributos es mucho más extensible y funcional, aunque sospecho que en la práctica las características como el update_url y la solicitud de la tienda no se han implementado ampliamente.

En cuanto a saber qué solicitar: En teoría, qué extensiones admite un proveedor están documentadas en el documento XRDS disponible durante la fase de descubrimiento, como se indica en la sección Extensions de la especificación. Si está utilizando python-openid (o tal vez una de las otras bibliotecas en OpenID habilitado), usted podría preguntar para que a través de algo así como

auth_req = consumer.begin('http://example.com/joe') 

from openid.extensions import sreg 

if sreg.supportsSreg(auth_req.endpoint): 
    sreg_request = sreg.SRegRequest(required=['nickname','email']) 
    auth_req.addExtension(sreg_request) 
else: 
    # maybe AX, maybe something else... 

Desafortunadamente, OpenID delegación identificador hace que muy poco fiable. El usuario puede estar utilizando el método de descubrimiento basado en HTML, que no anuncia extensiones en absoluto, puede tener un XRDS que no incluye la misma información de extensión que el proveedor, o un XRDS que alguna vez fue preciso pero ahora está fuera de la fecha.

Además, incluso si obtiene un XRDS que anuncia la extensión AX, hasta donde yo sé, no le dice qué atributos admite el proveedor (es decir, qué esquema AX).

El enfoque más práctico es, probablemente, para solicitar muchas cosas, y si recuperas algo, puedes usarlo.

+0

¿Pido las extensiones que quiero en cada autenticación de OpenID, o debería dejar de preguntar si creo que ya sé el OpenID (que puede ser simplemente 'google.com') ... – joeforker

+0

@joeforker, las respuestas de descubrimiento podrían se almacenan en caché, ya que no cambian con mucha frecuencia, lo que reduce el número de solicitudes de OP y el análisis de gastos generales. Ver http://stackoverflow.com/questions/2799638/should-i-cache-the-xrds-file-returned-in-openid – rajeshnair

Cuestiones relacionadas