Размещенное поставщиком S2S приложение с высоким уровнем доверия с политикой приложения и пользователя

Я относительно новичок в разработке приложений для 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, есть ли способ получить идентификатор пользователя в этом случае?

Любая помощь приветствуется.

Спасибо


person paresh.bijvani    schedule 10.02.2015    source источник
comment
Вам когда-нибудь удавалось решить эту проблему? Я сталкиваюсь с аналогичной проблемой, и в моем случае я получаю сообщение о том, что служба управления доступом Azure недоступна. ошибка для моей среды OnPerm SharePoint 2016.   -  person Ravi Khambhati    schedule 12.04.2018


Ответы (1)


Для проблемы № 1: мне кажется, что шаг № 9 (Настройка параметров проверки подлинности) в этот раздел (из первой статьи MSDN, на которую вы ссылались) был пропущен, т.е. вместо параметра "Использовать сертификат" была выбрана "Служба управления ACS".

Для проблемы № 2: в TokenHelper.cs есть вспомогательные методы для проверки AccessToken из HttpRequest, который определяет действительность запроса.

person Manvir Singh    schedule 11.02.2015