Domanda

Sto lavorando con Open ID, solo giocando intorno a fare una classe di interagire / auth Open ID del sul mio sito (in PHP). So che ci sono un paio di altre librerie (come RPX), ma voglio usare la mia (la sua buona per mantenere aiutare a comprendere meglio il protocollo e se la sua giusta per me).

La domanda che ho riferisce alla sequenza scoperta Open ID. Fondamentalmente ho raggiunto il punto in cui sto guardando utilizzando il doc XRDS per ottenere l'identità locale (openid.identity) dal dell'identità dichiarata (openid.claimed_id).

La mia domanda è, devo fare una richiesta cURL per ottenere il XRDS posizione (X-XRDS-location) e poi fare un'altra richiesta di cURL per ottenere la doc XRDS reale ??

Sembra che con una richiesta DUMB Ho solo fare una richiesta cURL e ottenere l'Open ID del server, ma devono fare due di utilizzare il metodo di Smart XRDS. Proprio non mi sembra giusto, in grado di chiunque altro darmi qualche info.

È stato utile?

Soluzione

Per essere completa, sì, il tuo RP deve HTTP GET sull'URL l'utente che si dà, e quindi la ricerca di un punto di riferimento del documento XRDS e se trovato fare un altro HTTP GET da lì. Tenete a mente che i XRDS possono essere ospitati su un server diverso, in modo da non codificare fino nulla che richiedono il collegamento ad essere la stessa tra le due richieste in quanto potrebbe non essere la stessa connessione.

Se nella vostra richiesta iniziale HTTP GET di includere l'intestazione HTTP:

Accept: application/xrds+xml

Poi la pagina potrebbe rispondere immediatamente con il documento XRDS piuttosto che un documento HTML che si deve analizzare per un collegamento XRDS. Sarete in grado di rilevare che questo si è verificato controllando l'intestazione di risposta HTTP per l'applicazione / xrds + xml nella sua intestazione Content-Type. Questa è un'ottimizzazione in modo che RP in genere non devono fare che seconda chiamata HTTP GET - ma non si può fare affidamento su ciò accada.

Altri suggerimenti

Il miglior consiglio che posso dare, è quello di cercare di astrarre il vostro HTTP che richiede un po ', e poi basta passare attraverso l'intero processo di fare una richiesta HTTP due volte.

È possibile mantenere le istanze di arricciarsi attorno, se si vuole accelerare le cose usando le connessioni persistenti, ma che può o non può essere che tu vuoi.

Spero che questo aiuta, e buona fortuna .. OpenID è uno degli standard web più ingombranti e contorte che ho incontrato dal WebDAV =)

Evert

Lo so, sono in ritardo al gioco qui, ma penso che si dovrebbe anche verificare la protocollo webfinger. Prende la "posta elettronica come userid" standard modello e permette di fare una ricerca da lì alla scoperta di OpenID etc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top