SharePoint 2013和Oauth 2.0

14

我需要澄清一下Sharepoint如何使用Oauth以及使用Bearer tokens的限制。

我希望能够从Sharepoint中获取一个Bearer token,通过Javascript跨域访问,或者设置Sharepoint使用与我当前Oauth服务器相同的机器密钥。

我已经阅读了大部分这篇文章和其他几篇文章,但是没有明确的示例:

https://msdn.microsoft.com/en-us/magazine/dn198245.aspx

总结:

  1. 我需要一个用Javascript检索来自Sharepoint的Bearer token的代码片段,跨域并且...

  2. 我需要一个共享基于声明的Bearer tokens与Oauth 2.0使用相同的机器密钥的教程

为了澄清我的意图:

我需要从不同平台上的Sharepoint列表进行读/写操作,并希望有一个标准的方法。 REST似乎是最好的选择。我们的应用程序正在使用RESTful服务和Oauth进行开发。 我们已经使用html和javascript涵盖了所有内容。 我想了解如何继续使用我们当前的Oauth和REST模式,在我们的html应用程序以及使用基于声明的Bearer tokens的Java和C#上创建安全的Sharepoint接口。 如果我做对了,请确认并提供一些明确的示例/资源。 如果有更好的方法,请告诉我。

1个回答

2

Bearer tokens的工作原理类似于货币,拥有token的人就是合法所有者。这就是为什么术语“bearer”(持有token的人)被引入的原因。这些tokens主要依赖于SSL / TLS进行安全控制。持有访问token的人将被允许进入。

回答你的第一个问题,我已经研究过了,并找到了你想要做的事情。如果您想使用JavaScript并使用跨域库来编写它,则无需提供访问token。

var executor = new SP.RequestExecutor(appweburl);
executor.executeAsync(
  {
    url:
        appweburl +
        "/_api/SP.AppContextSite(@target)/web/lists?@target='" +
        hostweburl + "'",
    method: "GET",
    success: successHandler,
    error: errorHandler
 }
);

我从这里得到了答案:https://msdn.microsoft.com/en-us/library/jj164022.aspx 对于您的第二个问题,我认为可能可以做到,但不常见。很遗憾,我不太喜欢使用与当前Oauth服务器相同的机器密钥,抱歉!如果我在不久的将来遇到这种情况,我一定会回答这个问题。
为了澄清你正在做什么,是的,看起来你走在了正确的轨道上。如果你的应用程序都使用RESTful服务,那么REST绝对是正确的选择。在某种意义上,REST可能更容易,因为它使用HTTP请求,这比使用COBRA、RPC或SOAP更容易。如果您想要更安全,最好使用类似SOAP的东西。尽管有争议。
一些好的资源可能是查看Microsoft Libraries。他们有非常好的教程,但有些不太清楚。微软有关于SOAP和REST之间差异的文档,可以在这里找到:https://msdn.microsoft.com/en-us/magazine/dd942839.aspx 这是微软图书馆的链接:https://msdn.microsoft.com/en-us/library/ms310241 OAuth、REST等可能很艰难,也很难理解。文档是存在的,但对于某些事情,如使用与您的OAuth 2.0相同的机器密钥,可能很困难。
抱歉,如果我没有表述得太清楚,但如果你需要更多帮助,只需回复这个答案。我希望这在某种程度上对您有所帮助,并祝您愉快!

这确实给了我一些方向。在我将其标记为答案之前,我正在进行实验。我已经克服了理解Oauth和REST的难关...我只是想知道在Sharepoint中我的选择是什么。我现在正在阅读您给我的链接,特别是您发布的脚本链接。如果这就是我要找的,我会告诉您的。谢谢! - Lee Duckworth
不客气 - 我会尝试在第二个问题中找到你要寻找的内容,但是文档很少。希望有所帮助! - makertech81
回答你的第一个问题,我进行了研究并找到了你想要做的事情。如果你想用JavaScript编写并使用跨域库,你不需要提供访问令牌。需要澄清的是,跨域库只能从Sharepoint Add-in中获取,而不能从外部获取。 - Lee Duckworth
1
是的,抱歉——我可能误解了那个问题,并为此道歉。跨域库仅可从Sharepoint Add-in中获取,而不是外部获取。对此感到抱歉。 - makertech81
1
这给了我所需的方向,因此我会给你赏金。最终答案是跨域库仅在插件中可用。通过JavaScript外部获取令牌非常复杂。最佳选择是通过插件中的跨域脚本或通过C#与服务器端对象进行接口。插件似乎是简单性、可维护性和安全性最好的选择。感谢您的意见! - Lee Duckworth

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