Пошаговые заметки об интеграции Drupal со службами Google App

Главные вкладки

Аватар пользователя Jean Jack Jean Jack 24 февраля 2010 в 2:07

В данной статье я расскажу, как мне удалось настроить систему единого входа на сайт на Drupal и Google Apps.
Drupal является в нашем случае сервером аутентификации, а Google - сервером приложений.
Работа сайта на Drupal не нарушается, просто у пользователей появляется возможность, используя один пароль и логин входить на сайт Drupal, а потом переходя по ссылке на страницы служб Google для вашего домена они автоматически оказываются авторизованными и в Google.

Подробнее данный механизм описан здесь (http://code.google.com/intl/ru-RU/apis/apps/sso/saml_reference_implement...).
Возникают вопросы по синхронизации пользователей в разных системах, но они решаются при помощи Google Provisioning API http://code.google.com/intl/ru-RU/apis/apps/gdata_provisioning_api_v2.0_....

После поиска я обнаружил, что модулей на Drupal.org выполняющих указанные выше задачи нет.
На сайте Sterno.ru я обнаружил некоторые материалы по данной теме, но мне показались их наработки слишком сырыми. Тем более, что их модуль требует наличия библиотеки XMLSec, которую надо установить на сервер, что не всегда возможно на виртуальном хостинге.
На Drupal.org есть группа, где делается попытка создать такой модуль In-depth Integration of Google Apps in Drupal (http://groups.drupal.org/node/20128), но судя по отзывам модуль получился недоделанным и разработка его остановилась. Плюс модуля, что он не требует сторонних библиотек, только пару дополнительных модулей для Drupal.
Но в указанной группе, мне удалось обнаружить ссылку на хороший модуль Grupal - Drupal® seamlessly integrated with Google Apps (http://code.google.com/p/grupal), его я потестировал и решил использовать. Правда это модуль использует Zend framework для шифрования, и из за проблем с политикой лицензирования его не размещают на Drupal.org.

Требования к системам:
Google Apps -версия с поддержкой SAML SSO и Provision API (для образовательных учреждений, профессиональная, для партнеров; стандартная версия Provision API не поддерживает).
Drupal - версия 6.x (последняя с сайта Drupal.org).

1. Делаем резервную копия вашего сайта на Drupal!
2. Регистрируем и настраиваем Google для работы с вашим доменом;
3. Скачиваем модуль Grupal с http://code.google.com/p/grupal/ . Текущая версия Grupal - 2.0.2. Устанавливаем модуль (копируем в папку sites/all/modules) и включаем его;
4. Генерируем сертификат и ключ, как я уже описал здесь;
5. Открываем страницу настройки Grupal и приступаем к вводу параметров, там краткие инструкции, так что буду обращать внимание только на самое важное:
* Google Apps service credentials - здесь указываем e-mail и пароль администратора служб Google (при каждом изменении параметров Grupal запрашивает ввод пароля администратора Google, видимо для безопасности);
* Google Apps service settings - включаем интеграцию и указываем имя домена в службах Google; по умолчанию Grupal запрещает дальнейшее изменение имен пользователей, чтобы не нарушилась связь пользователя с Google (связь по логину), здесь можно отключить данный запрет;
* Google Apps Single Sign On (SSO) - включаем SSO и копируем сертификат и ключ, копировать надо полное сождержание файлов, включая надписи "---BEGIN PRIVATE ....." и подобные;
6. Переходим на страницу настройки прав для пользователей Drupal и разрешаем требуемой группе пользователей пользоваться модулем Grupal;
7. Переходим к настройке Google Apps:
* на странице UserSettings включаем Provisioning API;
* на старнице SetupSSO включаем SSO, загружаем файл сертификата безопасности и указываем следующие адреса в соответствующих полях:
o http://Ваш-домен/grupal/signin;
o http://Ваш-домен/grupal/signout;
o http://Ваш-домен/grupal/password;
8. * Google требует длину пароля не менее 6 символов, Drupal такое ограничение не устанавливает, а просто рекомендует пользователям увеличить пароль. Чтобы привести в соответствие данные политики паролей рекомендую установить модуль http://drupal.org/project/password_strength;
9. * Описываемый здесь модуль Grupal автоматически синхронизирует только вновь созданных пользователей. Загружать старые базы пользователей придется вручную, при помощи CSV файла через панель управления Google Apps на странице Users;
10.Далее тестируйте, и разместите ссылки на ваши службы Гугл для пользователей.

Комментарии

Аватар пользователя Valeratal Valeratal 24 февраля 2010 в 12:45

да, почта у меня есть (только для администрации)
просто там же лимит у бесплатной версии суровый. 50 человек
А платить за всех зерегенных. В чем смысл?

За описание интеграции спасибо.

Аватар пользователя Jean Jack Jean Jack 24 февраля 2010 в 12:49

Смысл есть, если нужно сделать не публичный портал, а корпоративный сайт организации, где кол-во пользователей измеримо.
Если у Вас некоммерческая организация (образовательное учреждение), то по запросу Гугл предоставит вам все бесплатно.
Кстати, в бесплатной версии, насколько мне известно, нет поддержки Provision API, и там интеграция не заработает((

Аватар пользователя Jean Jack Jean Jack 10 января 2011 в 3:22

Serebron wrote:
Это чтобы посмотреть почту нужно идти на http://mail.google.com/a/site.com/ ?

(Не совсем по теме материала...)
Это зависит от того, как Вы настроили службы Google.
- Есть возможность перейти по ссылке как Вы указали;
- Можно указать свой псевдоним вида mail.site.ru, настроив свои ДНС сервера;
- Можно просматривать почту через почтовый клиент.

Serebron wrote:
А полная интеграция вобще почты возможна?

Что Вы имеете ввиду?

Аватар пользователя Serebron Serebron 10 января 2011 в 11:41

"Jean Jack" wrote:

Serebron написал:
А полная интеграция вобще почты возможна?

Что Вы имеете ввиду?

Предложить пользователям функционал (в частности почту) полностью на своем сайте без перехода куда-либо ещё.

Аватар пользователя Jean Jack Jean Jack 10 января 2011 в 13:45

Serebron wrote:

Предложить пользователям функционал (в частности почту) полностью на своем сайте без перехода куда-либо ещё.

Я особо не занимался интеграцией интерфейса почты Гугл в сам сайт, пользователи переходят на отдельную страницу.
Думаю можно попробовать использовать iframe или почитать про API Google и на их основе писать собственый интерфейс, но это сложновато.
Если Вам нужна такая полная интеграция, посмотрите в сторону модулей для Друпал, что-нибудь типа Notification, приватных сообщений и тому подобное.

Аватар пользователя perest perest 28 декабря 2011 в 16:28

граждане, я тоже подключил почту на свой домен, все нужные записи для гоголя на хосте создал, хостовое удалил. но друпал всё-равно сайтовые исходящие шлёт на почтовый сервер хостинга, а не на гогольский! друпал 7. что за ерунда? в итоге у меня фунциклируют два почтовых хоста, один на гугле - отправляет и принимает как положено, кроме исходящих с сайта, и один у хостера, на который идёт всё только с сайта. стандартными средствами можно настроить исходящие? или только с применением модуля SMTP в котором надо прописать smtp.gmail.com?