SharePoint hosted app

advertisement
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
Хостинг приложений
SharePoint
Web
Your Hosted
Site
SharePoint
Web
Azure
Host
web
App Web
Клиентские технологии и
workflow
(from WSP)
Формы приложений
Полная страница
Отдельная страница приложения
со своей навигацией
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
https://contoso.sharepoint.com/site/
web
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
1. SharePoint получает Context Token от ACS
и передает приложению
2. App проверяет Context Token
и получает Access Token от ACS
3. Access Token используется App
для доступа к SharePoint
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
_api это алиас для _vti_bin/client.svc
Server
Client
REST
OData
JSON
CSOM
JavaScript
Library
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
Станислав Выщепан
Марат Бакиров
Ай-Теко
UMSOFT
http://gandjustas.blogspot.ru
http://www.gotdotnet.ru/blogs/mbakirov
@gandjustas
@mbakirov
Download