Проблема аутентификации с SharePoint Online при использовании GetWebLoginClientContext - PullRequest
0 голосов
/ 26 марта 2019

У нас есть веб-приложение ASP.NET MVC, работающее в Azure, в котором мы хотим предоставить результаты поиска от клиента SharePoint Online.Пользователи в веб-приложении проходят проверку подлинности в Azure AD, и мы хотим, чтобы они выполняли поиск как сами по себе (сохраняя свою личность и не используя системную учетную запись), чтобы они могли видеть только те элементы в результатах поиска, которые имеют к ним отношение.Я думал, что это будет довольно распространенным требованием.

Используя расширения CSOM SharePointPnPCoreOnline , мы смогли получить результаты поиска с помощью:

            var authManager = new OfficeDevPnP.Core.AuthenticationManager();
            ClientContext clientContext = authManager.GetWebLoginClientContext("https://xxxxxx.sharepoint.com");
            KeywordQuery keywordQuery = new KeywordQuery(clientContext);
            keywordQuery.QueryText = "queryText";
            SearchExecutor searchExecutor = new SearchExecutor(clientContext);
            ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
            clientContext.ExecuteQuery();

(метод GetWebLoginClientContextоткрывает новое окно, которое запрашивает учетные данные пользователя, если они еще не аутентифицированы. В идеале мы хотели бы, чтобы это было выполнено без вывода сообщений, но это был единственный метод, который удалось получить.)

Во время разработки все работалоОК - мы получили ожидаемые результаты поиска.Однако после публикации веб-приложения в Azure при поиске мы получили следующую ошибку:

502 - веб-сервер получил неверный ответ, выступая в качестве шлюза или прокси-сервера.Проблема со страницей, которую вы ищете, и она не может быть отображена.Когда веб-сервер (выступая в качестве шлюза или прокси-сервера) связывался с вышестоящим контент-сервером, он получал недопустимый ответ от контент-сервера.

Одним из предложений, найденных нами для решения ошибок http 502, былоочистить кеш браузера, но после того, как мы это сделали, он больше не работал на компьютере разработчика.Вместо отображения всплывающего окна, запрашивающего учетные данные пользователя, во всплывающем окне теперь просто отображается домашняя страница клиента SharePoint Online без запроса входа в систему.

У кого-нибудь есть объяснение этому?

Или, если нет,лучший способ заставить пользователей выполнять поиск в SharePoint Online без всплывающего окна, отображаемого методом GetWebLoginClientContext?

1 Ответ

0 голосов
/ 30 марта 2019

В конце концов это решено не с помощью метода GetWebLoginClientContext (который открывает окно для ввода учетных данных пользователем), а с помощью метода GetAzureADWebApplicationAuthenticatedContext, который выполняет аутентификацию в режиме без вывода сообщений с использованием маркера доступа oauth. Проблема заключалась в получении правильного токена для перехода к методу, что нам удалось сделать с помощью MicrosoftGraphHelper.GetAccessTokenForCurrentUser(url) found here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...