Transcript SharePoint hosted app
msdevcon.ru
#msdevcon
Создание приложений (Apps) для SharePoint 2013 в Облаке
Станислав Выщепан Марат Бакиров Ай-Теко UMSOFT
Обзор
Что такое приложения (apps) для SharePoint 2013 SharePoint hosted apps Cloud-Hosted apps Возможности приложений
История разработки для SharePoint
2003: XML 2007: Feature framework & WSP 2010: Sandbox solutions & Client Side 2013: Apps
Хостинг приложений
Клиентские технологии и workflow SharePoint Web SharePoint Web Host web Your Hosted App Web (from WSP) Site Azure
Формы приложений
Полная страница Отдельная страница приложения со своей навигацией App Parts Аналог веб-части для размещения на страницах сайтов SharePoint Пункт меню Команда в Ribbon или Меню
Обзор
Что такое приложения (apps) для SharePoint 2013 SharePoint hosted apps Cloud-Hosted apps Возможности приложений
Почему SharePoint hosted apps
Одинаково работает в Office365 и on-prem Автоматическая аутентификация Встроенная изоляция экземпляров Без лишних затрат Без дополнительной инфраструктуры
Изоляция SharePoint-hosted приложений
1 экземпляр приложения = 1 “app web” Каждый App webs имеет свой домен: Host web https://contoso.sharepoint.com/site/ App web https://contoso-appUID.sharepoint.com/site/app/ Использует same-origin policy в браузере для изоляции JavaScript
Доступные компоненты
• • Списки Библиотеки • • WebProxy App scoped ECTs • • • JavaScript Workflows Custom Actions • • • • Страницы (только разметка) CSS файлы Custom Actions Встроенные Веб-части
JSOM & REST
JavaScript object model var ctx = new SP.ClientContext("http://contoso-appUID.spo.com/site/app"); ctx.load(ctx.get_web()); ctx.executeQueryAsync(); REST/OData http://contoso-appUID.spo.com/site/app/_api/web/Title
Как обратиться к Host Web
Чтобы обратиться к артефактам за пределами app web: 1.
2.
Запросить разрешения Сделать CSOM вызов, используя правильный контекст
SP.AppContextSite
DEMO
SharePoint hosted app
Марат Бакиров UMSOFT
Обзор
Что такое приложения (apps) для SharePoint 2013 SharePoint hosted apps Cloud-Hosted apps Возможности приложений
Для чего использовать Cloud hosted app
Серверный код C#, PHP, Java, Ruby, ваш_любимый_язык Повышение привилегий Выполнять код с разрешениями выше, чем у пользователя Обработчики событий Обрабатывать события установки и удаления app Обрабатывать события элементов, списков, сайтов, события безопасности
Недостатки Cloud hosted app
Необходимо самостоятельно хостить app Azure или другие провайдеры Ваша собственная инфраструктура Необходимо использовать OAuth или S2S Управлять токенами OAuth Настраивать «доверие» S2S в on-prem Необходимо поддерживать консистентный внешний вид Стили и chrome как в SharePoint
OAuth
Защищенное взаимодействие с SharePoint App и SharePoint доверяют третьей стороне (ACS) Доверие создается используя ClientId и ClientSecret SharePoint и ACS знают ClientId App и ACS знают ClientSecret OAuth Token Flow
High-Trust apps
OAuth не работает в On-prem Можно подключить, но требует Office365 Tenant S2S Trust позволяет app обращаться напрямую Доверие устанавливается с помощью сертификатов App имеет приватный ключ, которым подписывает запросы Недостатки Требуется настройка фермы Работает только в on-prem
Управление токенами OAuth
Ваше приложение должно запрашивать токены Visual Studio генерирует класс TokenHelper для этих целей
Какое API использовать
В apps доступны только CSOM\REST API Только они поддерживают OAuth\S2S Веб-сервисы не доступны Требуют аутентификацию пользователя Серверная объектная модель не доступна Требует запуска на ферме
SharePoint 2013 Remote API
Server Client
REST OData JSON
_api это алиас для _vti_bin/client.svc JavaScript Library CSOM Silverlight Library Произвольный код .Net CLR Library
Chrome control
Консистентный внешний вид app Подтягивает темы с host web Включает ссылку на host web Обязательное требование Microsoft Настраиваемое меню команд Можно добавлять ссылки на любые страницы
Chrome control
$( function var () { options = { appIconUrl: "siteicon.png" , appTitle: "Chrome control app" } }); var nav = new SP.UI.Controls.Navigation( "chrome_ctrl_placeholder" , options ); nav.setVisible( true );
Remote Event Receivers
Аналог серверных ресиверов Синхронные и асинхронные события События элементов, списков, сайтов, безопасности и приложений Не гарантируется доставка событий В случае недоступности сервера ресиверы игнорируются Для отладки необходимо использовать Azure Service Bus
DEMO
Autohosted app
Марат Бакиров UMSOFT
Обзор
Что такое приложения (apps) для SharePoint 2013 SharePoint hosted apps Cloud-Hosted apps Возможности приложений
Разрешения приложений
Сильно отличаются от разрешений для пользователей Даются по принципу «все или ничего» Не учитывают иерархию объектов Разрешения можно получить только на весь сайт\коллекцию целиком Разрешения могут быть выданы на разные области Список, сайт, коллекция сайтов или тенант Поиск, BCS, таксономия, профили пользователей Отдельные возможности Project Server
Политики разрешений
App + User policy Пользователь И приложение должны иметь доступ к ресурсу (пересечение) Если не хватает разрешений, то «нет доступа» или «элемент не найден» App-only policy Только приложение должно иметь доступ к ресурсу Приложение может обращаться к SharePoint без контекста пользователя Только в серверном коде User Policy Не используется в приложениях
App-only Policy
Два основных сценария: 1. Выполнение действий с разрешениями выше, чем у текущего пользователя (повышение привилегий) 2. Обращение к SharePoint без контекста пользователя Как это сделать 1. Добавить
AllowAppOnlyPolicy
в AppManifest.xml
2. Написать код для получения app only access token
Workflow
Используется движок WF4 Поддерживаются циклы и переходы к предыдущим состояниям Автоматически привязываются к спискам на app web Можно привязать к host web с помощью кода
App-scoped ECT
Можно создавать внешние типы контента в app Раньше только на уровне всей фермы Работает с OData источниками данных Удобный дизайнер в студии
App parts
Тоже самое что Web Part с iframe Внутри отображается обычная страница из app Можно задавать настраиваемые свойства Доступные типы свойств: string, enum, int, bool Не поддерживают connections И вообще и никак не получить данные из родительской страницы
Custom Actions
Можно добавлять команды на host web Единственный способ передать данные из host web в app В любые меню и ribbon Только ссылку,
javascript:код
не работает Команды могут отображать страницу в диалоге Достаточно добавить
HostWebDialog="true"
в XML
DEMO
Provider hosted app
Марат Бакиров UMSOFT
Заключение
Что такое приложения (apps) для SharePoint 2013 SharePoint hosted apps Cloud-Hosted apps Возможности приложений
Q&A Станислав Выщепан Ай-Теко http://gandjustas.blogspot.ru
@gandjustas Марат Бакиров UMSOFT http://www.gotdotnet.ru/blogs/mbakirov @mbakirov