Авторизация в офис 365/Sharepoint онлайн
Я пишу службу WCF, размещенную в Azure как (PaaS). Служба, в свою очередь, должна поговорить с Sharepoint 2013 Online/Office 365.
Я искал использование объектной модели SharePoint, чтобы поговорить с ним, но продолжаю получать следующую ошибку: "Удаленный сервер ответил на ошибку: (403) Запрещено"
Когда мы входим в систему для доступа к экземпляру SharePoint через браузер, вы обычно можете перейти к https://login.microsoftonline.com/login.srf, чтобы вы могли войти в систему, используя Live Id. Проблема в том, что мы используем федеративную учетную запись, а не Live Id, и поэтому снова перенаправляем сайт adfs для входа в систему.
Я просмотрел образец кода в http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx, который использует проверку подлинности на основе утверждений, но это всегда терпит неудачу с сообщением "Ошибка аутентификации", когда пытаясь восстановить Самленский токен.
Если я это правильно понимаю. Один из способов сделать это - получить токен Saml, передать это SPO, который, в свою очередь, вернет два файла cookie, которые мне нужно включить в запросы, сделанные с объектной моделью клиента. Проблема в том, что я не нахожу подходящих примеров того, как аутентифицироваться с помощью федеративной учетной записи на С#.
Может ли кто-нибудь указать мне в правильном направлении, как я могу продолжить авторизацию службы WCF, чтобы поговорить с SharePoint.
Извините, если это неправильный форум. Я не совсем уверен, является ли это проблемой Azure или просто SharePoint, поскольку я довольно новичок в обеих технологиях.
Ответы
Ответ 1
Попробуйте следующую статью в блоге. Возможность доступа к Office 365 API
была объявлена только в прошлом месяце, и возможность вызова этого из вашего веб-сервиса довольно новая. Эта статья является хорошим учебным пособием по этому вопросу.
Ответ 2
Привет, на всякий случай, когда мы зарегистрировались как реселлер Office365 несколько дней назад, мне пришлось изучить один больной лимит: auth. токен, который вы получаете от sharepoint, действителен только в течение 2 часов! Возможно, это изменится в Sharepoint 15, который знает...
Я думал, что это может быть ценным намеком, потому что неизвестного обходного пути нет...
Ответ 3
Пробовали ли вы использовать код примера Wictor и просто заменили URL login.srf своей конечной точкой входа в ADFS?
Держите скрипт открытым, когда вы попробуете это, и каждый раз проверяйте запросы/ответы, вы, вероятно, увидите более подробную информацию о том, почему вещи не работают в теле ответа, которые С# скрывает в своей объектной модели.
Также просмотрите это сообщение в блоге о том, как получить токен auth из ADFS, используя что-либо, где вы можете создать конверт SOAP:
http://leandrob.com/2012/02/request-a-token-from-adfs-using-ws-trust-from-ios-objective-c-iphone-ipad-android-java-node-js-or-any-platform-or-language/
Ответ 4
Я знаю, что это старый пост, но использование SharePoint Online через приложение без использования принципала приложения может быть нарушением вашего лицензионного соглашения. Вы должны использовать истинный OAuth и класс TokenHelper, который является частью SDK, чтобы правильно использовать модель приложения.
Ответ 5
Используйте сайт Office 365 SharePoint для создания среды, в которой вы можете использовать ACS для установления доверия между приложением, размещенным провайдером, и локальной фермой SharePoint 2013, так же, как если бы вы разрабатывали приложения для Office 365 SharePoint сайт.
Вы можете посетить следующую ссылку для дальнейшего понимания:
http://msdn.microsoft.com/en-us/library/office/dn155905(v=office.15).aspx
Ответ 6
Я получал 403, пытаясь сделать подобное с объектной моделью SharePoint. Все, что я должен был сделать, чтобы исправить это, это включить пользовательский агент.
Ответ здесь Использование WebRequest для получения файлов cookie для автоматического входа в Sharepoint Online, получения ошибок varour
Надеюсь, что это поможет.