КРАТКО
Vooid (Very Own OpenID server) — это OpenID-сервер для персонального сайта, написанного на Джанго. Обслуживает единственного пользователя — администратора, позволяя ему использовать любой URL своего сайта для авторизации по OpenID.
Сделан на библиотеке python-openid и поддерживает версии протокола 1.1 и 2.
УСТАНОВКА
Сервер требует наличия:
- библиотеки python-openid версии 2.x.
- установленного приложения sites из contrib Джанго
Установка:
Поместить директорию vooid в питоновский путь.
-
Включить в INSTALLED_APPS:
INSTALLED_APPS = [ ... 'vooid', ]
-
Подключить middleware (выдает HTTP-заголовок для XRDS discovery):
MIDDLEWARE_CLASSES = [ ... 'vooid.middleware.YadisMiddleware', ]
-
Подключить URL'ы служебных view в urlconf проекта:
urlpatterns = patterns('', ... (r'^openid/', include('vooid.urls')), )
Установить нужные таблицы в базу через ./manage.py syncdb
В простейшем случае этого достаточно. Дополнительные телодвижения требуются для поддержки версии OpenID 1.1, настройки SREG (выдачи дополнительных данных пользователя) и настройки URL'а сайта, который будет использоваться в качестве OpenID.
ВНИМАНИЕ! Чтобы куда-то логиниться по OpenID, пользователь должен быть уже залогинен на своем сервере как администратор. Я посчитал излишним включать в Vooid формочку для логина, поэтому если администратор не залогинен, Vooid просто сразу отказывает в авторизации.
НАСТРОЙКИ
По умолчанию OpenID URL'ом считается корень сайта. Если хочется другой, его надо указать в настройках:
VOOID_IDENTITY = 'http://mysite.com/about/'
Также Vooid умеет выдавать расширенную информацию о пользователе — SREG. Задается она так:
VOOID_SREG = {
'nickname': 'hax0r',
'email': 'hax0r@mysite.com',
'fullname': u'Василий Чапаев', # не-ascii строки должны быть unicode
}
ПОДДЕРЖКА OPENID 1.1
Для поддержки старой версии OpenID (которая все еще распространена) нужно в шаблон
той страницы, которая выдается по OpenID URL'у (чаще всего это индекс сайта) включить
теги <link>
со ссылками на OpenID-сервер. Для этого в Vooid есть шаблонный тег:
{% load openid %}
{% openid_links %}
По умолчанию теги выдаются в HTML-синтаксисе (то есть без " />"), но можно их вывести и в XHTML-фиде:
{% openid_links "xhtml" %}
Этот тег обычно проще всего указать в базовом шаблоне сайта.
КООРДИНАТЫ
Автор: Иван Сагалаев (maniac@softwaremaniacs.org)
Распространяется по лицензии New BSD (3-clause) (см. файл LICENSE).