授权到 Office 365/Sharepoint 在线

45

我正在编写一个托管在Azure(PaaS)上的WCF服务。该服务需要与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令牌时都会失败并显示“认证失败”消息。

如果我理解正确。其中一种方法是获取Saml Token,将其传递给SPO,SPO将返回两个Cookie,我需要在使用Client对象模型进行的请求中包含这些Cookie。问题是,我没有找到如何使用C#对联合帐户进行身份验证的适当示例。

有人能指点我正确的方向,告诉我如何授权我的WCF服务与SharePoint通信吗?

如果此帖子发布到了错误的论坛中,请原谅。因为我对这两项技术都不太熟悉,所以不确定这是Azure问题还是SharePoint问题。


2
我在Stackoverflow上有同样的问题。现在终于解决了:https://dev59.com/C2gu5IYBdhLWcg3we3Ct 我还写了一篇博客文章,并创建了一个带有蓝带项目的GitHub存储库,以便入门。希望它能帮到你: http://jwillmer.de/blog/2013/01/04/sharepoint-online-with-adfs-authentication/ - jwillmer
我也遇到了同样的问题 - @jwillmer,我有一个修改过的代码版本,不依赖于win8.net 4.5...如果您想接受补丁或github的另一个版本,请告诉我。 - Travis Sharp
@TravisSharp,我很高兴接受你的拉取请求。欢迎改进!;-) - jwillmer
6个回答

1

尝试阅读以下博客文章。最近才宣布了访问Office 365 API的能力,从Web服务中调用此API也是相当新的。这篇文章是一个很好的教程。


0

0

0

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


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-any-platform-or-language/


0

嗨,万一我们几天前注册为Office365经销商,我必须学习一个痛苦的教训:从SharePoint获取的授权令牌仅有效期为2小时!也许在SharePoint 15中会改变...

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


我知道已经有一段时间了,但是否有任何官方页面:MSDN或类似页面提到了这个问题? - Akash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接