SharePoint hosted app

Download Report

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