在线授权Office 365 / Sharepoint

时间:2012-11-21 09:22:10

标签: c# sharepoint authentication sharepoint-2013

我编写了一个作为(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 Token,将其传递给SPO,SPO将返回两个cookie,我需要将这些cookie包含在使用Client对象模型发出的请求中。问题是我没有找到任何关于如何在C#中使用Federated帐户进行身份验证的正确示例。

任何人都可以指出我正确的方向,关于如何继续授权我的WCF服务与SharePoint通信。

很抱歉,如果这是在错误的论坛。我不确定这是Azure问题还是仅仅是SharePoint,因为我对这两种技术都不熟悉。

6 个答案:

答案 0 :(得分:1)

尝试以下博客文章。访问Office 365 API的能力刚刚在上个月宣布,并且从您的Web服务调用此功能的能力非常新。 This article是关于这个主题的好教程。

答案 1 :(得分:0)

嗨,如果我们几天前注册成为Office365经销商,我必须学习一个痛苦的事情:认证。您从sharepoint获得的令牌仅有效2小时!也许这会改变Sharepoint 15谁知道......

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

答案 2 :(得分:0)

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

在尝试这个时保持小提琴打开,并且每次都检查请求/响应,您可能会看到更多详细信息,说明为什么在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-any-platform-or-language/

答案 3 :(得分:0)

我知道这是一篇旧帖子,但在不使用App Principal的情况下通过应用程序使用SharePoint Online可能违反了许可协议。您应该使用真正的OAuth和SDK中的TokenHelper类来正确使用应用程序模型。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

尝试与SharePoint对象模型类似时,我得到了403。我必须做的就是纠正它,包括用户代理。

在这里回答Using WebRequest to obtain cookies to automatically log into Sharepoint Online, getting variour errors

希望得到一些帮助。