Я относительно новичок в разработке приложений для Sharepoint.
Попытка создать локальное приложение, размещенное у поставщика с высоким уровнем доверия, с политикой приложения и пользователя. Я следовал приведенному ниже документу, чтобы создать демонстрацию.
https://msdn.microsoft.com/library/office/fp179901(v=office.15) http://blogs.msdn.com/b/russmax/archive/2014/06/23/part-1-intro-to-provider-hosted-apps-setup-the-infrastructure.aspx
Я столкнулся с несколькими проблемами, и у меня есть вопрос, который нужно уточнить, если кто-нибудь может помочь.
1) Когда я проверяю свой запрос в инструментах разработки, он дает мне данные формы ниже.
SPAppToken:
URL-адрес SP-сайта:
SPSiteTitle:Главная
SPSiteLogoUrl:
SPSiteLanguage: en-US
SPSiteCulture: en-US
SPRedirectMessage:EndpointAuthorityMatches
SPErrorCorrelationId:f069e89c-a0cd-20ce-a1c0-7db95db0334b
теперь, когда я проверяю журнал с указанным выше идентификатором корреляции, я нахожу ошибки ниже.
-- Ошибка при получении токена для приложения i:0i.t|ms.sp.ext|ab8ff461-bc75-4516-b475-b666ac47eec0@802f23e1-6e11-45d1-909c-07a7b0ab0ce2, исключение: Microsoft.SharePoint.SPException : Служба управления доступом Azure недоступна.
-- Токен приложения запрошен из appredirect.aspx для сайта: 92bfe5c4-7255-4b09-a89a-07e0e2b03622, но при его создании произошла ошибка. Это может быть случай, когда нам не нужен токен или когда субъект приложения не был настроен должным образом. -- Получение сообщения об ошибке для исключения Microsoft.SharePoint.SPException: служба управления доступом Azure недоступна.
а) Я верю, что приложение с высоким уровнем доверия не должно искать Azure ACS. Эта ошибка из-за какой-то неправильной конфигурации? б) SPAppToken здесь имеет значение null. Всегда ли это значение null в случае приложения с высоким уровнем доверия?
2) Скажем, я вошел в sharepoint с пользователем A и пытаюсь запустить приложение sharepoint. В коде приложения я хочу получить личность вошедшего в систему пользователя (то есть A). Из приведенного ниже кода я обнаружил, что Request.LogonUserIdentity дает мне личность пользователя A. Но как мы можем быть уверены, что запрос поступил только из точки доступа. Я могу скопировать тот же URL-адрес приложения и вставить его в окно браузера, войти в систему с учетными данными окна и получить тот же результат. Итак, вопрос в том, как я могу проверить, поступил ли его законный запрос только от точки доступа, и никто не подделывает запрос. ALos, когда я проверяю запрос в инструментах разработки, его ключ авторизации передается в заголовке запроса. Какая польза от этого?
using (var clientContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWeb, Request.LogonUserIdentity)) { clientContext.Load(clientContext.Web, web => web.Title); clientContext.ExecuteQuery(); Response.Write(clientContext.Web.Title); }
3) Кроме того, что произойдет, если мое приложение не поддерживает аутентификацию Windows и поддерживает только FBA, есть ли способ получить идентификатор пользователя в этом случае?
Любая помощь приветствуется.
Спасибо