Обнаружение открытых идентификаторов XRDS

StackOverflow https://stackoverflow.com/questions/781102

  •  13-09-2019
  •  | 
  •  

Вопрос

Я работаю с Open Id, просто играюсь с созданием класса для взаимодействия / аутентификации открытых идентификаторов на моем сайте (на PHP).Я знаю, что есть несколько других библиотек (например, RPX), но я хочу использовать свою собственную (это полезно для того, чтобы помочь лучше понять протокол и подходит ли он мне).

Вопрос, который у меня возник, относится к последовательности обнаружения открытого идентификатора.В принципе, я достиг точки, когда я рассматриваю возможность использования документа XRDS для получения локального идентификатора (OpenID.identity) из заявленного идентификатора (OpenID.claimed_id).

Мой вопрос в том, должен ли я сделать запрос cURL, чтобы получить местоположение XRDS (X-XRDS-location), а затем сделать другой запрос cURL, чтобы получить фактический документ XRDS??

Похоже, что с помощью НЕМОГО запроса я делаю только один запрос cURL и получаю сервер Open Id, но должен сделать два, чтобы использовать интеллектуальный метод XRDS.Просто это кажется неправильным, может кто-нибудь еще дать мне немного информации.

Это было полезно?

Решение

Для полноты, да, ваш RP должен получить HTTP по URL, который вам дает пользователь, а затем выполнить поиск ссылки на документ XRDS и, если найден, выполнить другой HTTP GET оттуда.Имейте в виду, что XRDS могут быть размещены на другом сервере, поэтому не кодируйте ничего, что потребовало бы, чтобы соединение было одинаковым между двумя запросами, поскольку это может быть не одно и то же соединение.

Если в вашем первоначальном запросе HTTP GET вы включаете HTTP-заголовок:

Accept: application/xrds+xml

Тогда страница МОЖЕТ немедленно ответить документом XRDS, а не HTML-документом, который вам нужно проанализировать для ссылки XRDS.Вы сможете определить, что это произошло, проверив заголовок HTTP-ответа для application / xrds + xml в его заголовке Content-Type.Это оптимизация, так что RPS обычно не приходится выполнять этот второй HTTP GET-вызов - но вы не можете полагаться на то, что это произойдет.

Другие советы

Лучший совет, который я могу вам дать, - попытаться немного абстрагироваться от вашего HTTP-запроса, а затем просто дважды повторить весь процесс выполнения HTTP-запроса.

Вы можете сохранить свои экземпляры curl, если хотите ускорить работу с помощью постоянных подключений, но это может быть вашим желанием, а может и не быть.

Я надеюсь, что это поможет, и желаю удачи..OpenID - один из самых громоздких и запутанных веб-стандартов, с которыми я сталкивался со времен WebDAV =)

Выворачивать

Я знаю, что опаздываю на игру здесь, но я думаю, вам также следует проверить протокол webfinger.Он использует стандартный шаблон "электронная почта как идентификатор пользователя" и позволяет вам выполнять поиск оттуда, чтобы обнаружить OpenID и т.д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top