45

我编写了一个作为(PaaS)托管在 Azure 中的 WCF 服务。该服务又需要与 Sharepoint 2013 Online/Office 365 通信。

我正在考虑使用 Sharepoint Client 对象模型与之交谈,但不断收到以下错误:“远程服务器返回错误:(403) Forbidden” 当我们通过浏览器登录访问 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 令牌时,这总是失败并显示“身份验证失败”消息。

如果我理解正确的话。这样做的一种方法是获取 Saml 令牌,将其传递给 SPO,后者将返回两个 cookie,我需要将它们包含在使用客户端对象模型发出的请求中。问题是我没有找到任何关于如何在 C# 中使用联合帐户进行身份验证的适当示例。

谁能指出我正确的方向,关于我如何继续授权我的 WCF 服务与 SharePoint 对话。

对不起,如果这是在错误的论坛。我不确定这是 Azure 问题还是只是 SharePoint,因为我对这两种技术都很陌生。

4

6 回答 6

1

试试下面的博客文章。访问 Office365 API的功能上个月刚刚宣布,从您的 Web 服务调用它的功能是相当新的。 这篇文章是关于这个主题的一个很好的教程。

于 2014-04-16T12:29:44.020 回答
0

您是否尝试过使用 Wictor 的示例代码并将 login.srf URL 替换为您的 ADFS 登录端点?

在您尝试此操作时保持 fiddler 处于打开状态,并每次检查请求/响应,您可能会看到更多详细信息,了解为什么 C# 隐藏在其对象模型中的响应正文中无法正常工作。

也请查看此博客文章,了解如何使用可以创建 SOAP 信封的任何东西从 ADFS 获取身份验证令牌:

http://leandrob.com/2012/02/request-a-token-from-adfs-using-ws-trust-from-ios-objective-c-iphone-ipad-android-java-node-js-or-任何平台或语言/

于 2012-12-18T11:44:45.713 回答
0

在尝试对 SharePoint 对象模型进行类似操作时,我得到了 403。为了纠正它,我所要做的就是包含用户代理。

在这里回答 使用WebRequest获取cookies自动登录Sharepoint Online,报错

希望它有一些帮助。

于 2014-04-21T20:28:39.373 回答
0

我知道这是一篇旧帖子,但通过应用程序使用 SharePoint Online 而不使用应用程序主体可能违反您的许可协议。您应该使用真正的 OAuth 和作为 SDK 一部分的 TokenHelper 类来正确使用应用程序模型。

于 2013-12-09T19:45:21.673 回答
0

嗨,以防我们几天前注册为 Office365 经销商,我不得不学习一个痛苦的教训:身份验证。您从 sharepoint 获得的令牌仅在 2 小时内有效!也许这会在 Sharepoint 15 中改变,谁知道呢……

我认为这可能是一个有价值的提示,因为没有已知的解决方法......

于 2012-12-14T22:15:59.580 回答
0

使用 Office 365 SharePoint 网站创建一个环境,您可以在其中使用 ACS 在提供商托管的应用程序和本地 SharePoint 2013 场之间建立信任,就像您为 Office 365 SharePoint 网站开发应用程序一样。您可以访问以下链接进一步了解: http: //msdn.microsoft.com/en-us/library/office/dn155905 (v=office.15).aspx

于 2014-03-07T13:55:38.550 回答