【问题标题】:Authenticate and Call Sharepoint Online Api from Azure Function从 Azure Function 验证和调用 Sharepoint Online Api
【发布时间】:2017-05-19 14:17:40
【问题描述】:

我想在 Sharepoint Online 上添加文档/文件时触发自定义操作。这个想法是使用 Microsoft Flow,但由于 Flow 不允许您使用添加的文件的自定义列(只是标题、添加日期、内容类型等),我正在考虑手动调用 Sharepoint API ,通过 Azure 函数。所以步骤是:

  1. 用户在 Sharepoint Online 上的文档库中添加新文档

  2. 在添加该文档后会触发 Microsoft Flow。

  3. Flow 调用 Azure 函数并将文档 ID 传递给它。

  4. 该函数向 Microsoft Graph Api 进行身份验证,然后请求具有该 ID 的文件。

  5. 该函数获取自定义字段,然后对该文件的自定义参数执行一些操作。

然而,我一直在尝试进行身份验证,但它总是要求我输入用户并传递 HTML。当然,Azure Function 无法做到这一点。如何轻松向 Microsoft Graph API 进行身份验证?我被困住了。

还有其他选择吗?正如我之前所说,这是我一直在考虑的一种解决方法,因为 Microsoft Flow 不允许您获取最近添加/修改的文件的自定义字段,只有默认字段......但我只想做的是添加新文件时管理这些数据。解决方案不一定需要使用 Function 或 Microsoft Graph Api。

提前致谢。

【问题讨论】:

    标签: azure sharepoint microsoft-graph-api azure-functions


    【解决方案1】:

    目前没有很好的身份验证方法 - 我们正在努力支持此功能。困难的部分是 AD 身份验证,任何解决方案都需要处理。我们正在做一些事情来让函数变得简单。

    您可以为身份验证执行的操作是获取离线访问权限,授予您访问刷新令牌的权限,然后使用刷新令牌获取您的访问令牌。您可以在 Azure 网站现有的 EasyAuth 令牌存储 (https://cgillum.tech/2016/03/07/app-service-token-store/) 上构建它。然后您可以登录一次,将刷新令牌保存在 EasyAuth 的令牌存储中,该函数可以在每次执行时从那里提取它。 这是高水平的答案。如果您现在渴望这样做,我可以详细说明更具体的步骤。

    【讨论】:

      【解决方案2】:

      您可以通过 URL 将功能或远程 Web(Azure 或本地)注册为您的 Sharepoint 中的应用程序: "http://.sharepoint.com/_layouts/15/AppRegNew.aspx

      并通过以下方式授予它权限:

      http://.sharepoint.com/_layouts/15/AppInv.aspx

      例如:

          <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
      </AppPermissionRequests>
      

      通过这种方式,您将能够访问您的租户或列表或您的任何权限。

      【讨论】:

        【解决方案3】:

        您正在寻找的是app-only authentication。如果您可以通过 SharePoint Rest API 进行文档查询/更新,那么您有 2 个选项:

        1. Granting access via Azure AD App-Only
        2. Granting access using SharePoint App-Only(这与上面@netadictos 的回答中指出的方法相同。)

        如果您更喜欢使用 MS Graph API 进行文档查询/更新,那么只有 #1 是一个选项。 #1 涉及更多,因为它需要客户端密码和自签名安全证书。 #2 只需要应用程序/客户端 ID 和密码。

        上面链接的 MSDN 文档使用 PowerShell 脚本来生成安全证书,但我更喜欢 Bob German's instructions 手动创建/导出一个。他还在他的教程中包含了为您的 Azure 函数注册 Azure AD 应用程序的说明。

        【讨论】:

          猜你喜欢
          • 2021-10-15
          • 2019-08-02
          • 1970-01-01
          • 2018-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-22
          • 2018-08-13
          相关资源
          最近更新 更多