Question

Je travaille avec Open Id, jouer juste faire autour d'une classe d'interagir / auth ouverts ids sur mon site (en PHP). Je sais qu'il ya quelques autres bibliothèques (comme RPX), mais je veux utiliser mon propre (il est bon de garder aider à mieux comprendre le protocole et si son droit pour moi).

La question porte à la séquence de découverte ouverte Id. Au fond, je suis arrivé au point où je suis à la recherche à l'aide de la doc XRDS pour obtenir l'identité locale (openid.identity) de l'identité revendiquée (de openid.claimed_id).

Ma question est, dois-je faire une demande cURL pour obtenir le XRDS Lieu (X-XRDS-lieu), puis faire une autre demande cURL pour obtenir le XRDS doc réelle ??

Il semble que d'une demande DUMB-je faire qu'une seule demande cURL et obtenir l'Open Id Server, mais doivent faire deux à utiliser les XRDS méthode intelligente. Tout ne semble pas juste, peut quelqu'un d'autre me donner quelques informations.

Était-ce utile?

La solution

Pour être complet, oui, votre RP doit HTTP GET sur l'URL que l'utilisateur vous donne, puis la recherche d'une référence de documents XRDS et si trouvé une autre faire HTTP GET à partir de là. Gardez à l'esprit que les XRDS peuvent être hébergés sur un serveur différent, donc ne code pas quoi que ce soit qui nécessite que la connexion soit le même entre les deux demandes, car il pourrait ne pas être la même connexion.

Si dans votre requête GET initiale HTTP vous incluez l'en-tête HTTP:

Accept: application/xrds+xml

Alors la page peut répondre immédiatement avec le document XRDS plutôt qu'un document HTML que vous devez analyser un lien XRDS. Vous serez en mesure de détecter que cela a eu lieu en vérifiant l'en-tête de réponse HTTP pour une application / XRDS + xml dans son en-tête Content-Type. Ceci est une optimisation afin que n'ont pas RPs généralement de faire ce deuxième appel HTTP GET - mais vous ne pouvez pas compter sur elle se passe.

Autres conseils

Le meilleur conseil que je peux vous donner, est d'essayer de faire abstraction de votre HTTP demandant un peu, puis juste passer par tout le processus de faire une requête HTTP deux fois.

Vous pouvez garder vos instances curl autour si vous voulez accélérer les choses à l'aide de connexions persistantes, mais qui peuvent ou peuvent ne pas être voulez-vous voulez.

J'espère que cette aide, et bonne chance .. OpenID est l'un des standards du web les plus volumineux et alambiquées que je suis venu à travers depuis WebDAV =)

Evert

Je sais que je suis en retard dans le jeu, mais je pense que vous devriez également consulter

scroll top