Новый способ интеграции с Microsoft Live@edu
В предыдущей записи я довольно подробно описал возможности интеграции с Microsoft Live@edu. Я намеренно использую название программы в качестве объекта интеграции, поскольку в отличие от просто Windows Live в Microsoft Live@edu входит несколько технологий:
- Exchange Web Services (EWS) – для управления сервером Exchange: работа с письмами, календарем, контактами и др. объектами Exchange.
- Single Sign-On (SSO) – единый вход в Live@edu
- Windows PowerShell 2 (PS) – основная технология для управления Exchange Server и другими продуктами Microsoft. В Live@edu также отвечает за управление учетными записями.
- Windows Live Admin Center (WLAC - ManageDomain2 web-service) – служит для управления учетными записями Windows Live ID. Эта технология не поддерживается для Live@edu, поэтому крайне не рекомендуется использовать команды этого модуля.
Для каждой из перечисленных технологий существует свой набор SDK:
- EWS - специальный Managed API,
- Single Sign-On – демонстрационный портал и целый ряд специальных классов (до недавнего времени в SSO toolkit входил также и сервер Windows Live ID),
- PS - требуется подключение специального класса (который пока официально не существует), а также отслеживание конвейера и открытых удаленных сессий;
- WLAC – предоставляет очень ограниченные возможности управления, однако базовые операции, такие, как сброс пароля, удобнее делать через него.
Кроме этого я реализовал 3 из 4 технологий (за исключением PS) в PHP, что позволяет интегрировать сервисы и с этой платформой.
При серьезном подходе на освоение всех 4 перечисленных блоков потребуется не более одной недели, при этом интеграция может быть довольно тесной – от авторизации на портале с помощью Windows Live ID до полноценных веб-частей электронной почты и календаря, а также интеграции с системой расписания.
В то же время, основная проблема с которой мы столкнулись при помощи во внедрении – это понимание разовой природы процесса (действительно, интеграцию достаточно один раз установить и забыть про необходимость поддержки), в связи с чем выделение на глубокое изучение Microsoft Live@edu недели времени невозможно.
Мы пошли навстречу и разработали уникальный продукт, являющийся к тому же бесплатным и с открытым кодом, – Live at Education Meta Web-Service. Основная задача этого веб-сервиса – предоставление разработчику единого интерфейса управления всем входящими в Live@edu технологиями. При этом в ближайшей версии мы внедрим поддержку единого входа в систему MSDN AA ELMS, о чем будет дополнительная запись блога.
Чтобы не быть голословным, приведу несколько примеров на языках .NET и PHP.
Операция |
C# (для разработки можно использовать бесплатный продукт Visual Web Developer Express 2010) |
PHP(требуется наличие библиотеки SOAP, входящей в основной пакет PHP) |
Подключение веб-сервиса | Добавление веб-ссылки и директива:
|
$soap = new SoapClient(“https://localhost:1180/laemws.asmx?wsdl”,array('login' => ‘<login>’,'password' => ‘<password'>’)); |
Получение ссылки SSO для переадресации пользователя в почтовый ящик | string url = ws.SSO_GetUrl(<email>, RedirectType.OutlookLive); | $url = $soap->SSO_GetUrl(array("LiveID"=>$email,"RedirectUrl"=>https://outlook.com)); |
Количество сообщений в почтовом ящике | MailboxInfo mi = ws.EWS_Email_GetCount(<email>); |
$response = $soap->EWS_Email_GetCount(array("LiveID"=>$email)); |
Оцените, как просто изменить первичный адрес электронной почты (например, если вуз генерирует ящик 123739457934859823@vuz.ru по уникальному коду-хэшу, предоставляя студенту право выбрать используемое имя, например vasya@vuz.ru, самостоятельно):
ws.PS_Execute("%{Invoke-Command -Session $rs {Set-Mailbox 123739457934859823@vuz.ru -EmailAddresses vasya@vuz.ru}}");
И все – никаких дополнительных библиотек, подключаемых к программному коду вашего продукта, никаких лишних модулей. Одна задача – один вызов метода веб-сервиса.
При этом на стороне веб-сервиса организовано автоматическое создание необходимых подключений при первом вызове соответствующего метода, а также кэширование подключения удаленной сессии PowerShell (этот процесс занимает 10-15 секунд и его вызов каждый раз для, например, изменения первичного SMTP-адреса был бы очень длительным), соединения EWS и т.д. для максимального повышения эффективности.
Веб-сервис можно размещать как непосредственно на сервере с порталом, так и на каком-либо централизованном узле, делая его доступным для нескольких проектов. При этом доступ к различным Live@edu/MSDN AA подпискам разграничен для разных пользователей.
Более подробно основные рекомендации по интеграции, а также подробности по работе с веб-сервисом, включая ссылки на загрузку и документацию, изложены здесь:
Несмотря на то, что веб-сервис фактически стал доступен всего 1-2 недели назад, мы уже подключили его для нескольких проектов с общим количеством пользователей более 100 тысяч. При этом время загрузки интегрированных модулей Live@edu (ссылки на сервисы, индикация непрочтенной почты, возможность сброса пароля) сократилась в 3-4 раза от 5-6 секунд до 1-2.
Technorati Теги: Live@edu,EWS,PowerShell,SSO,Интеграция