Начиная с 6 версии Drupal, в систему входит модуль OpenID, обеспечивающий авторизацию по протоколу OpenID. Но у модуля есть довольно серьезные проблемы.
В частности, сам модуль реализует антипаттерн, описанный Иваном Сагалаевым в своем блоге .
Вторая проблема модуля, с точки зрения юзабилити, это непрозрачная авторизация по OpenID, а если быть точнее, то при первой попытке авторизации через определенный аккаунт OpenID система просит заполнить определенное количество полей.
.
В общем, лично я не вижу ничего особо плохого в заполнении небольшого количества полей (тем более, что в некоторых случаях часть полей заполняется автоматически, но об этом ниже) — причина тому в архитектуре Drupal. .
Учетные записи OpenID привязаны к реальным учетным записям Drupal, т.е.
при успешной авторизации у провайдера OpenID Drupal пытается сопоставить учетную запись OpenID с учетной записью Drupal. Если такого соответствия не обнаружено, система предложит зарегистрировать новую учетную запись, для чего необходимо заполнить определенное количество обязательных полей – в общем, это уникальное имя пользователя в системе и адрес электронной почты.
Если совпадение найдено, пользователь авторизуется.
В профиле пользователь может добавить любое количество учетных записей OpenID, которые будут связаны с его учетной записью Drupal. С тем, как работает OpenID в Drupal, все более-менее понятно.
Но вопросы по удобству использования никуда не делись — ссылку внизу блока авторизации нельзя назвать очень удобным решением.
В блоге Ивана, о котором я писал выше, был представлен один из возможных прототипов решения этой задачи, реализацию которого я начал реализовывать для Drupal. Как и что было написано — думаю, в данном случае это не имеет особого значения — в конце концов все распространяется в виде исходников.
Давайте сразу к делу - что произошло =) Мы получили систему, позволяющую с помощью определенного набора API подключить дружественную (насколько мне удалось) поддержку определенных OpenID-провайдеров, плюс к ней добавилась дополнительная возможность в виде подключаемых блоков тем оформления.
Немного подробнее обо всем и с картинками =) Думаю, что нет необходимости рассказывать о том, как устанавливаются модули в Drupal, но при необходимости советую прочитать моя предыдущая статья , где я описал основы работы с этой системой.
Так что просто скачать модуль Расширения OpenID и установите его (обратите внимание, что это зависит от модуля OpenID).
Теперь можно приступить к настройке.
Пойдем Управление пользователями -> Расширения OpenID и попасть в настройки провайдеров OpenID.
В настройках (функционирование которых я скопировал из модуля Блоки =)) вы можете подключать/отключать доступные провайдеры, а также устанавливать их порядок.
Последнее удобно, когда вы знаете, что большинство авторизаций по OpenID на вашем ресурсе приходят, например, из Живого Журнала — тогда вы ставите ЖЖ на первое место и он будет выбираться по умолчанию при загрузке страниц, на которых отображается блок.
Там же можно найти вкладку Темы , нажав на который вы увидите список доступных тем.
Темы определяют внешний вид формы авторизации OpenID. Базовый пакет (на момент написания статьи в блоге другого не существует =)) содержит 2 темы:
- Падать — демонстрация
- Аккордеон — демонстрация
Настраивать фильтр видимости по роли нет смысла — в любом случае блок виден только неавторизованным пользователям.
После успешной авторизации у провайдера OpenID, при первой попытке входа, как я писал выше, Drupal перенаправляет пользователя на страницу регистрации, где пытается заполнить поля формы значениями, полученными от провайдера.
Если провайдер OpenID реализует SRE (Simple Registration Extension) и обязательные поля в вашем профиле заполнены, то эти поля в регистрационной форме заполняются автоматически.
Например, в моем аккаунте на Яндексе была заполнена вся необходимая информация - при попытке входа Яндекс спросил, хочу ли я разрешить авторизацию для ресурса example.com и разрешаю ли я перенести 2 поля на этот ресурс - Алиас и электронная почта.
Если процедура регистрации завершена успешно в автоматическом режиме (т.е.
получены все необходимые данные и он успешно проходит валидацию), то для пользователя создается учетная запись Drupal, к которой автоматически привязывается идентификатор OpenID и пользователь автоматически авторизуется.
в систему.
Если необходимые данные не заполнены или провайдер не предоставляет такие данные (например, Google, который не реализует SRE, а только AX, который не поддерживается модулем OpenID в Druapal) система выдаст ошибку и попросит ввести недостающие поля вручную.
Также, если провайдер OpenID не предоставляет Псевдоним, то поле «Имя пользователя» заполняется значением идентификатора OpenID. Для решения этой проблемы в модуле предусмотрен небольшой обходной путь, но он работает только у некоторых провайдеров — в базовой комплектации только с Живым Журналом и Яндексом.
В общем, пропатчив модуль OpenID Мне удалось получить адрес электронной почты от Google, поэтому в будущем думаю немного расширить функционал модуля, а для некоторых провайдеров написать свои обработчики, которые заменят стандартные.
Также были планы приложить руку к модулю OpenID , часть Drupal 7, которая недавно перешла в режим заморозки функций.
Ну а пока всё работает так, как работает. Также следует отметить, что модуль Расширения OpenID «подчищает» некоторые аспекты модуля OpenID , а именно удаляет ссылки из форм входа (в блоке и на отдельной странице), переводя эти формы в режим авторизации OpenID - поведение штатного модуля повторяется провайдером Любой OpenID , который включается по умолчанию при установке модуля.
Вот, пожалуй, и все, что я собирался вам рассказать об улучшении удобства использования авторизации OpenID в Drupal. Модуль на данный момент можно скачать только на моем сайте в разделе Проекты .
После того, как модуль немного почистят, ему будет присвоено (не могу придумать русский эквивалент этого слова) Drupal.org , о чем я сообщу вам позже.
И напоследок небольшая интрига — изначально этот модуль разрабатывался для проекта, который должен увидеть свет в ближайшем будущем.
Анонс проекта обязательно будет опубликован =) Вот это точно =) Жду отзывов/баг-репортов/предложений/пожеланий в комментариях.
PS, на данный момент есть некоторые проблемы с отображением дизайна Аккордеон в некоторых темах Drupal. В частности, дизайн не совсем корректно работает с темой.
ЛайтВорд .
УПД: В настоящее время модуль проходит проверку кода на сайте Drupal.org .
УПД2: Для тех, кто получает ошибку при попытке входа в Google, Google использует https, поэтому PHP должен быть собран с поддержкой OpenSSL (в Ubuntu достаточно установить пакет openssl, если я не ошибаюсь).
УПД3: обновился до версии 0.6.5, в ней: - добавлен новый провайдер Chi.mp. — добавлена возможность проверить доступность провайдера - реализована проверка google и chi.mp - теперь оба недоступны, если нет поддержки openssl, о чем будет уведомление в администрации провайдеров.
Теги: #drupal #openid #Юзабилити #drupal
-
Игровые Ноутбуки — 5 Необходимых Функций
19 Oct, 24 -
Преимущества Услуги Спутникового Интернета
19 Oct, 24 -
Бумажка С Паролями На Мониторе
19 Oct, 24 -
Что Нового У Нас
19 Oct, 24 -
Начало Пути - Часть 1. Программные Решения.
19 Oct, 24 -
Google Рекламирует Спам-Сообщения
19 Oct, 24 -
Новая Демо-Версия Игры Hammerfight
19 Oct, 24