如何将SharePoint访问令牌从逻辑应用程序传递到HTTP终结点

时间:2018-12-05 11:22:19

标签: sharepoint-2013 sharepoint-online azure-logic-apps

我有一个逻辑应用程序,它每15分钟触发一次我的HTTP端点。然后,端点使用Rest API连接到SharePoint,并从特定列表中获取数据,然后将其添加到我的数据库中。

但是要从SharePoint获取数据,我需要访问令牌。我是否需要编写逻辑以在端点本身中获取访问令牌?还是有什么东西可以触发我的端点时从我的逻辑应用程序传递访问令牌?

2 个答案:

答案 0 :(得分:1)

作为第一答案。是的,使用SharePoint Online REST API实现在HTTP端点中获取访问令牌的逻辑。 通过此类指南可以是1234。我认为没有任何方法可以将访问令牌从Azure逻辑应用传递到您的终结点。

作为第二个答案,我建议使用SharePoint CSOM对象模型。要使用它,只需在HTTP端点所在的计算机上安装SharePoint Online Client Components SDK,然后将Microsoft.SharePoint.Client.dll Microsoft.SharePoint.Client.Runtime.dll库添加为引用。有一个很好的SharepointOnlineCredentials类可以为请求提供凭据。

或其他方式-您可以重新架构解决方案:

.1。如果我理解正确,Azure Logic Apps必须要求您通过现成的功能设置与SharePoint的连接。参见此article。我认为您可以通过Azure Logic App中的操作从SharePoint获取列表项,并将数据传递到HTTP终结点,而无需任何其他访问令牌请求,而仅作为方法参数。
.2。如果您可以从SharePoint访问HTTP端点,则可以将数据直接从SharePoint发送到端点,而不是从Azure逻辑应用发送。您可以从列表项,表单页面,网站工作流或某些Flow模板中进行操作。
.3。如果您没有从SharePoint访问HTTP端点的权限,则可以创建Azure托管的Web服务,并以任何方式从SharePoint调用其方法。该Web服务将数据作为方法参数传递到HTTP端点,而无需任何其他身份验证。 Web服务调用将通过SharePoint工作流中的列表项目表单保存中的javascript完成。从HTTP端点到SP,可能更容易获得此Azure Web服务的访问令牌。
.4。您正在使用Azure SQL数据库吗?如果是,则通过Business Connectivity Services BCS在SharePoint Online和Azure SQL数据库之间创建连接。类似于hereherehere。这允许用户通过开箱即用功能在SharePoint列表中内联获取,创建,更新数据库中的项目。
.5。创建定期运行的代码(控制台应用程序,PowerShell脚本,Windows服务)。将其安排在公司中的某些服务器上。该代码将使用CSOM SharePoint对象模型,并通过SharepointOnlineCredentials类更轻松地连接到SharePoint,获取数据并直接连接到HTTP端点或数据库。
.6。如果您的数据库是本地MS SQL Server,则可以使用this guide在SharePoint Online和本地SQL Server之间创建Business Connectivity Services内容类型。

您可以使用一些奢侈的方法:=)
1. SharePoint通过某种方式可以将包含数据的电子邮件从列表项发送到某些收件箱,而您的HTTP终结点可以获取这些电子邮件,解析数据并执行以下步骤。
2.也许您可以在某些公司本地MS SQL Server上创建Sql Server Integration Service(SSIS)程序包,该程序包将定期从SharePoint直接将数据发送到数据库或直接发送到HTTP终结点。
3.其他方式...

答案 1 :(得分:1)

“但是要从SharePoint获取数据,我需要访问令牌。是否需要编写逻辑以在端点本身中获取访问令牌?”

正确,您确实需要承载访问令牌。您在哪里托管HTTP端点的代码?如果可以将其作为功能或Web API放在Azure中,则可以实现仅应用程序权限,这将为您提供必要的访问令牌。

有2种选择:

  1. Granting access via Azure AD App-Only
  2. Granting access using SharePoint App-Only

第一个涉及更多,因为它需要一个客户端机密和一个自签名的安全证书,但是它将允许您访问任何O365 API。第二个更简单,仅需要应用程序/客户端ID和密码,但仅允许对SharePoint Rest API的权限。

上面链接的MSDN文档使用PowerShell脚本来生成安全证书,但是我更喜欢Bob German's instructions来手动创建/导出证书。他的教程中还包括有关为Azure功能注册Azure AD应用程序的说明。