Ответы пользователя по тегу OpenID
  • Как использовать OpenID без того, чтобы запрашивать у пользователя его OpenID URL?

    @PomanoB
    Как я понимаю (могу ошибаться):
    Кнопка ведёт не сразу на гугл, а на свой скрипт, который:
    1) Запрашивает у гугла по адресу www.google.com/accounts/o8/id документ:
    <?xml version="1.0" encoding="UTF-8"?>
    <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
      <XRD>
      <Service priority="0">
      <Type>http://specs.openid.net/auth/2.0/server</Type>
      <Type>http://openid.net/srv/ax/1.0</Type>
      <Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
      <Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
      <Type>http://specs.openid.net/extensions/pape/1.0</Type>
      <URI>https://www.google.com/accounts/o8/ud</URI>
      </Service>
      </XRD>
    </xrds:XRDS>
    

    2) Парсит ответ, узнаёт из него возможности и расширения, поддерживаемые провайдером, и адрес странички, на которой пользователь должен авторизоваться
    3) Перенаправляет пользователя на эту страницу, естественно составив правильный запрос со всеми полями (openid.ns, openid.mode и т.д.)

    Гугл после авторизации редиректит пользователя на указанный openid.return_to, после чего наш скрипт делает запрос на гугл для проверки авторизации
    Ответ написан
    2 комментария