Pregunta

Estoy trabajando con Open Id, simplemente jugando hacer una clase para interactuar / auth Id Abierto en mi sitio (en PHP).Sé que hay un par de otras Bibliotecas (como RPX), pero quiero usar mi propia (y su buena para mantener a ayudar a entender mejor el protocolo y si a su derecho para mí).

La pregunta que tengo se refiere a la Identificación Abierta de descubrimiento de la secuencia.Básicamente he llegado al punto donde yo estoy buscando en el uso de la XRDS doc para obtener la identidad local (openid.la identidad de la supuesta identidad (openid.claimed_id).

Mi pregunta es, ¿tengo que hacer un cURL de solicitud para obtener la XRDS Ubicación (X-XRDS-ubicación) y, a continuación, hacer otra solicitud cURL para obtener la real XRDS doc??

Parece que con un TONTO solicitud que yo sólo hacer un cURL de solicitar y obtener el Open Id de Servidor, pero tener que hacer dos para el uso de la XRDS Smart método.No nos parece bien, puede alguien darme alguna info.

¿Fue útil?

Solución

Para que sea completa, sí, el RP debe HTTP GET en la URL que el usuario le da, y luego buscar una referencia de documento y si se encuentra XRDS hacer otra HTTP GET desde allí. Tenga en cuenta que los XRDS puede ser alojado en un servidor diferente, así que no codificar hasta cualquier cosa que requiere la conexión a ser la misma entre las dos solicitudes, ya que podría no ser la misma conexión.

Si en su solicitud inicial de HTTP GET que incluye la cabecera HTTP:

Accept: application/xrds+xml

A continuación, la página puede responder inmediatamente con el documento XRDS en lugar de un documento HTML que hay que analizar para un enlace XRDS. Podrás detectar que esto ha ocurrido por el control de la cabecera de respuesta HTTP para la aplicación / Xrds + xml en su cabecera Content-Type. Esta es una optimización de manera que RPs no suelen tener que hacer esa segunda llamada HTTP GET - pero no se puede confiar en que esto ocurra.

Otros consejos

El mejor consejo que te puedo dar, es tratar de abstraer su HTTP solicitando un poco, y luego sólo tiene que ir a través de todo el proceso de hacer una petición HTTP dos veces.

Puede mantener sus instancias enrollamiento alrededor si quiere acelerar las cosas usando conexiones persistentes, pero que puede o no puede ser lo que desea.

Espero que esto ayude, y buena suerte .. OpenID es uno de los estándares web más voluminosas y complicadas que he encontrado desde WebDAV =)

Evert

Yo sé que estoy tarde para el juego aquí, pero creo que también debe comprobar fuera de la protocolo webfinger. Toma el "ID de usuario de correo electrónico como" patrón estándar y le permite hacer una búsqueda a partir de ahí para descubrir openid etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top