¿Cuál es la relación entre las extensiones sID y ax de OpenID? ¿Cómo sabe una parte confiante cuál solicitar, o ambas cosas?OpenID Simple Registration (sreg) vs. Attribute Exchange (ax)
Respuesta
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.
- 1. OpenID Attribute Exchange - ¿Debería usarlo?
- 2. ¿Cómo distinguir/identificar usuarios con OpenID sin solicitar campos SReg?
- 3. Tema Exchange vs Direct Exchange en RabbitMQ
- 4. Simple GWT OpenID Ejemplo
- 5. Métodos de descubrimiento de OpenID - Yadis VS HTML
- 6. OpenID vs OAuth
- 7. Spring @PostConstruct vs. init-method attribute
- 8. DotNetOpenAuth: ¿Cómo implementar un simple proveedor OpenId?
- 9. Preservar sreg en interrupciones AVR
- 10. ¿Hay alguna forma mejor de obtener información de OpenID del proveedor?
- 11. WCF Read DataMember Name attribute
- 12. Django-registration - alguna activación
- 13. django-registration "recordarme"
- 14. Django-registration, template
- 15. android c2dm registration ID
- 16. Registro interno vs. OpenID vs. Google Friend Connect vs. Facebook Connect vs. (etc)
- 17. Loader framework vs AsyncTask simple
- 18. Apóstrofo simple derecho vs. apóstrofo?
- 19. django-registration auto create UserProfile
- 20. ¿Cómo se puede crear un cuadro de diálogo simple en Dynamics AX?
- 21. autenticación OpenID en Ruby on Rails
- 22. Selenio checkbox attribute "checked"
- 23. GCC Bitwise Attribute
- 24. Rmove xmlns attribute
- 25. HTML5 data- * attribute rules?
- 26. Flags Enum attribute
- 27. C# - ConfigurationSection isRequired attribute
- 28. Descargar archivo adjunto de Exchange utilizando servicios web de Exchange
- 29. MVC Authorize Attribute + HttpUnauthorizedResult + FormsAuthentication
- 30. Ruby-OpenID: que requiere dirección de correo electrónico del proveedor de OpenID
¿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
@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