Управление Live@edu из PHP – Single Sign-On, Exchange Web Services, Windows Live Admin Center
Официальный Live@edu предоставляет все необходимые SDK для реализации всех перечисленных в заголовке тем на платформе .NET . В большинстве случаев я рекомендую использовать IIS + ASP .NET сайт как более удобную в разработке и обслуживании платформу. Но что делать, если в Вашем учебном заведении уже реализован портал на платформе PHP?
Чтобы облегчить внедрение я собрал все 3 технологии воедино. Есть всего несколько шагов, которые нужно выполнить для того, чтобы обогатить Ваш PHP-портал функциями управления Microsoft Live@edu .
1. Получение сертификата
Для получения сертификата посетите страницу https://eduadmin.live.com/SSO.aspx , авторизовавшись с помощью идентификатора Windows Live ID администратора домена, и нажмите кнопку “Запросить поддержку единого входа”.
В течение примерно недели Вы получите последовательно три письма. В первом будет ссылка на загрузку сертификата, во втором – пароль для загрузки и в третьем – идентификатор SiteID, шестизначный код для настройки модуля единого входа (SSO).
2. Загрузка класса
Загрузите комплект PHP SSO в папке SkyDrive.
3. Подготовка сертификата
В комплекте, полученном от ed-desk (п. 1), Вы найдете два файла: .cer и .pfx. Для работы системы SSO Вам потребуется сконвертировать сертификат из файла .pfx. Сделать это можно с помощью утилиты openssl.exe, входящей в состав дистрибутива:
-
- Командный файл runme.bat выполняет все необходимые команды при передаче ему параметром Вашего файла с сертификатом.
- При запросе пароля нажмите Enter.
- На выходе получится файл all.cer .
- Полученный файл необходимо разделить на две части.
- В первый файл с именем private.pem поместите первую часть файла до “-----END RSA PRIVATE KEY-----“ (включая эту строку).
- Оставшуюся часть файла поместите в cer.pem .
4. Настройка модуля
Настройка модуля производится в файле settings.php:
- $adminwlid , $adminpass – имя и пароль администратора домена. Эти данные требуются для работы класса Windows Live Admin Center.
- $applicationid, $secretkey – идентификатор приложения, который можно получить по инструкции https://msdn.microsoft.com/en-us/library/bb676626.aspx. Скорее всего имя домена будет занято в связи с настройкой SSO, поэтому Вы можете зарегистрировать домен с www. Например, для домена @live.vuz.ru это будет www.live.vuz.ru . Эти данные требуются для работы Exchange Web Services.
- $ewsadmin, $ewspass – данные пользователя, наделенного правами имперсонации. Более подробно в пункте 1 https://mamichev.spaces.live.com/blog/cns!DAD805F3381EED7B!2753.entry .
- $siteid – идентификатор SiteID (п. 1)
- $cer, $private – файлы с сертификатом из пункта 4.
5. Использование функций в Вашем приложении.
В состав sso_class.php входят три класса – WLAC, SSO, EWS. Вы можете воспользоваться файлом index.php для того, чтобы посмотреть пример использования всех реализованных возможностей.
Подключите файл класса и настроек:
include("settings.php");
include("sso_class.php");
Windows Live Admin Center (WLAC)
Вы можете создавать и удалять пользователей, менять пароль, адрес электронной почты и другие возможности, перечисленные на странице описания веб-сервиса https://domains.live.com/service/managedomain2.asmx . Обратите внимание, что функции расширенного управления недоступны для учетной записи Live@edu .
Для инициализации выполните команду:
- $wl = new wlac($adminwlid,$adminpass);
Теперь Вы можете выполнять команды, которые реализованы в файле index.php, например:
- $wl->Execute("ResetMemberPassword",Array("memberNameIn"=>$_POST['email'],"password"=>$_POST['password'],"resetPassword"=>"false"));
Метод Execute принимает два параметра. Первый – команда, второй – массив с параметрами. Если необходимо передавать многострочные параметры, можно использовать вложенный массив.
К адресу электронной почты и паролю, допустимому в Windows Live, есть определенные требования. Проверить правильность пароля можно с помощью метода:
- $wl->validate_creds($email,$pass)
На выходе будет массив с ошибками.
Single Sign-On (SSO)
Этот класс позволяет предоставить пользователю возможность доступа к сервисам Live@edu (Outlook Live, Office Live, Windows Live) после авторизации на Вашем портале без дополнительной авторизации Windows Live. SSO необходимо запросить и как это сделать, описано выше.
Процесс SSO состоит из трех шагов:
1. Получение Short Living Ticket (SLT) – кода авторизации для любого пользователя:
$getSLT = new GetSLT($siteid,$cer,$private);
2. Получение ссылки для переадресации (класс поддерживает сервисы outlooklive, olw, skydrive, spaces, home):
$ssourl = $getSLT->ServiceUrl($_POST['service'])."&slt=".$getSLT->Request($_POST['email'],"30");
3. Переадресация
header("location:$ssourl"); die();
Exchange Web Services (EWS)
Учебные заведения, подписанные на услугу Live@edu Organization (организации, зарегистрированные до 5 августа 2009-го года и подписавшие новое соглашение, и все организации, зарегистрированные после 5 августа 2009-го года) могут использовать технологию Exchange Web Services для получения доступа к данным пользователя для отображения их на портале после авторизации.
Пользователь (не обязательно администратор), который используется для обращения к серверу, должен обладать правами имперсонации. Как предоставить такие права, написано в пункте 1 инструкции https://mamichev.spaces.live.com/blog/cns!DAD805F3381EED7B!2753.entry .
Для инициализации функции выполните:
- $lews = new LAE_EWS(Array("admin"=>$ewsadmin,"pass"=>$ewspass,"appid"=>$applicationid,"seckey"=>$secretkey));
Для использования EWS обращайтесь к методам класса, например, для просмотра писем:
- $emails = $lews->GetEMails($_POST['email'],10,0);
Вы можете найти множество дополнительных функций, доступных для использования с EWS, в прототипе https://www.educationlabs.com/projects/moodleproduct/Pages/default.aspx .
6. Ссылки
Код в приложении уникален, однако основные принципы управления сервисами были “подсмотрены” в базовых разработках:
- Single Sign-On – концепция разработана Адамом Брэдли (Adam Bradley) в проекте https://phplivesso.codeplex.com/
- Exchange Web Services – технология управления EWS проработана в решении Microsoft Education Labs https://www.educationlabs.com/projects/moodleproduct/Pages/default.aspx .
- Windows Live Admin Center – структура подсмотрена у Mauricio Cuenca по адресу https://www.mauriciocuenca.com/blog/2008/07/windows-live-admin-center-php-client/ . Интересную реализацию также можно найти здесь: https://social.msdn.microsoft.com/forums/en-US/wlgeneraldev/thread/0720ba9e-85b8-4689-a2b6-20acf3d727fa/ , однако у меня возникли трудности с установкой и использованием библиотеки SOAP, поэтому я предпочел сделать несколько простых методов на базе CURL.