1. Бруно Максимович Понтекорво

    15.07.2008 11:56

    Приветствую.
    Лирика
    Спасибо за эту ветку форума :) Нечасто попадаются сообщества где на пинают новичков, а тут именно такое. Можно смело спрашивать.
    Конец лирики

    По существу вопроса. Поясните пожалуйста, как защитить свой OpenID от стороннего использования?
    Я пробую создать свой простой OpenID сервер. Взял пример для django из дистрибутива python-openid
    Кое-как что-то завелось, пока еще с тестовыми данными и все такое. Допустим, мой OpenID: http://mydomain/server/user
    По идее, его же может указать любой, кто знает о нем, так? Значит, я должен защитить view который обрабатывает этот адрес, паролем?
    Немного сумбурно, но суть вопроса в следующем: как запретить посторонним подписываться моим OpenID

    Спасибо.
  2. Вы немного неправильно поняли суть. В схеме аутентификации по OpenID присутствует не один URL, а по крайней мере два (на самом деле больше, но те, как правило, служебные). Первый - это ваш OpenID URL, второй - это URL OpenID-сервера (который указан в содержимом или заголовках, расположенным по OpenID URL).
    Ваш OpenID - это URL, о котором можно сказать, что вы являетесь его владельцем, и вы можете это подтвердить посредством какой-либо аутентификации. Определением, являетесь ли вы владельцем этого URL, в конечном итоге занимается OpenID-сервер.
    Так что сам OpenID URL ни в коем случае нельзя закрыать паролем - схема перестанет работать, т.к. его содержимое должно быть видно сайту, принимающему OpenID.

    Но доступ к специальному URL, по которому происходит проверка, являетесь ли вы владельцем данного URL, требует аутентификации на OpenID-сервере. Если эта аутентификация пропущена или чисто формальна (это называется "анонимный OpenID"), то да, кто угодно может представиться вашим OpenID. Если же она реально требует ввода некого секрета, известного только вам и серверу (пароль, сертификат и т.п.), то ваш OpenID неприкосновенен.
  3. Иван Сагалаев

    15.07.2008 12:50

    Другими словами, адрес http://mydomain/server/user — ваш OpenID, то он должен быть открыт. Но на странице по этому URL'у каким-либо способом указывается еще один URL — cлужебный URL сервера, например http://mydomain/server/endpoint. Вот он в ответ на определенные запросы со стороны OpenID-клиентов действительно должен пускать только авторизованного пользователя.

  4. Бруно Максимович Понтекорво

    15.07.2008 12:57

    Ага, спасибо, кое-что проясняется.
    Итак, допустим: в коде страницы http://mydomain/server/user есть теги:
    <link rel="openid.server" href="http://mydomain/server/endpoint/">
    <link rel="openid2.provider" href="http://mydomain/server/endpoint/">
    Значит, защищать я должен доступ к http://mydomain/server/endpoint/ ?
  5. Бруно Максимович Понтекорво

    15.07.2008 13:06

    Иван, спасибо. Пока набирал, появился ответ ) Магия.

bbcode