使用从 Azure AD 和 ADAL 获取的令牌访问本地 SharePoint

Ste*_*fan 5 authentication sharepoint cordova azure-active-directory adal

目标

使用 OAuth 从基于 Apache Cordova 的移动应用程序通过 REST 请求访问本地 SharePoint 数据。

到目前为止我已经尝试过的

1. Azure 移动服务/混合连接/AAD/ADAL

与博客文章代表用户访问 SharePoint类似,但使用本地服务器而不是 O365:

  1. 使用ADAL for Apache Cordova进行客户端登录。
  2. 通过混合连接连接到本地服务器的移动服务。
  3. 使用 ADAL.net 使用步骤 1 中获取的令牌获取 SharePoint 服务器的令牌。

除了第三步之外,此操作正常,因为本地服务器和 AAD 之间没有任何连接,因此无法获取令牌。

2. 与上面相同加上 Azure 应用程序代理

我们已经按照 Kirk Evans 在这篇文章中的描述设置了 Azure 应用程序代理。移动服务的 Azure AD 应用程序被授予对应用程序代理的应用程序(在同一 Azure AD 租户中)的访问权限。

现在步骤一到三运行良好。我们已经能够使用应用程序代理 URL 作为资源来获取令牌。然后我们尝试使用令牌执行 REST 请求,如下所示:

GET https://<server>.msappproxy.net/_api/web/title
Authorization: Bearer <the token>
Accept: application/json;odata=verbose
Run Code Online (Sandbox Code Playgroud)

但这会将 302 重定向发送到https://login.microsoftonline.com。我尝试通过将令牌作为“id_token=”发布到应用程序代理来模拟使用浏览器时完成的握手,但这似乎有点牵强,并且不是 Azure 应用程序代理设置的目的。

我认为缺少的部分是为本地 SharePoint 启用基于令牌的身份验证。我找不到任何关于如何做到这一点的信息。我正在考虑调查本地服务器上 SharePoint 应用程序(现在是加载项)的设置。我怀疑这能否解决问题。我尝试使用以下方法将服务器连接到 AAD: 如何:使用 Office 365 SharePoint 网站在本地 SharePoint 网站上授权提供程序托管的应用程序。这又更像是一次盲目的尝试。

问题

如何获取 AAD 令牌并使用它从 Cordova 移动应用程序执行针对本地 SharePoint 的请求?