Pergunta

Eu estou trabalhando com Open ID, brincar um pouco fazendo uma classe para interagir / auth Open ID da no meu site (em PHP). Eu sei que há algumas outras bibliotecas (como no RPX), mas eu quero usar o meu próprio (é bom para manter a ajuda a entender melhor o protocolo e se o seu direito para mim).

A questão que tem relaciona-se com a sequência de descoberta Open ID. Basicamente eu ter chegado ao ponto onde eu estou olhando usando o doc XRDS para obter a identidade local (openid.identity) da identidade declarada (openid.claimed_id).

A minha pergunta é, eu tenho que fazer uma solicitação cURL para obter o XRDS Localização (X-XRDS-location) e depois fazer outro pedido cURL para obter o real XRDS doc ??

Parece que com um pedido MUDO eu só fazer um pedido cURL e obter a Abrir Id Server, mas tem que fazer dois para usar o método XRDS inteligente. Apenas não parece certo, lata ninguém me dar algumas informações.

Foi útil?

Solução

Para ser completa, sim, a sua RP deve HTTP GET na URL que o usuário dá-lhe, em seguida, procurar uma referência de documento XRDS e se encontrado fazer outra HTTP GET de lá. Tenha em mente que os XRDS pode ser hospedado em um servidor diferente, por isso não o código acima de qualquer coisa que exigiria a conexão para ser o mesmo entre os dois pedidos, uma vez que pode não ser a mesma conexão.

Se em sua inicial HTTP GET solicitar você incluir o cabeçalho HTTP:

Accept: application/xrds+xml

Em seguida, a página pode responder imediatamente com as XRDS documento em vez de um documento HTML que você tem que analisar para um link XRDS. Você será capaz de detectar que isso tenha ocorrido, verificando o cabeçalho de resposta HTTP para application / xrds + xml em seu cabeçalho Content-Type. Esta é uma otimização para que os RPs normalmente não tem que fazer essa segunda chamada HTTP GET - mas você não pode confiar em que isso aconteça.

Outras dicas

O melhor conselho que posso dar-lhe, é tentar abstrair seu HTTP solicitando um pouco, e depois é só passar por todo o processo de fazer uma solicitação HTTP duas vezes.

Você pode manter suas instâncias onda em torno de se você quiser acelerar as coisas usando conexões persistentes, mas que pode ou não pode ser o que quer.

Espero que isso ajude, e boa sorte .. OpenID é um dos mais volumosos e padrões web complicadas eu me deparei desde WebDAV =)

Evert

Eu sei que estou atrasado para o jogo aqui, mas eu acho que você também deve verificar protocolo webfinger. Leva o "e-mail como ID de usuário" padrão padrão e permite-lhe fazer uma pesquisa de lá para descobrir openid etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top