Управление 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 .

image 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, входящей в состав дистрибутива:

    1. Командный файл runme.bat выполняет все необходимые команды при передаче ему параметром Вашего файла с сертификатом.
    2. При запросе пароля нажмите Enter.
    3. На выходе получится файл all.cer .
    4. Полученный файл необходимо разделить на две части.
    5. В первый файл с именем private.pem поместите первую часть файла до “-----END RSA PRIVATE KEY-----“ (включая эту строку).
    6. Оставшуюся часть файла поместите в 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. Ссылки

Код в приложении уникален, однако основные принципы управления сервисами были “подсмотрены” в базовых разработках: