使用来自基于Apache Cordova的移动应用程序使用OAuth的REST请求访问内部部署的SharePoint数据。
与博文Access SharePoint on behalf of the user类似,但使用内部服务器代替O365:
除了第三步之外,这种方法很好,因为内部部署服务器和AAD之间没有任何连接,因此无法获取令牌。
我们在此post中设置了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
但是这会将302重定向发送到https://login.microsoftonline.com。 我试图通过将令牌作为“id_token =”发布到应用程序代理来模拟使用浏览器时所做的握手,但这似乎有点牵强,而不是Azure应用程序代理设置所预期的。
我认为缺少的部分是为内部部署SharePoint启用基于令牌的身份验证。我找不到任何关于如何做到这一点。我正在考虑在内部部署服务器上调查SharePoint应用程序(现在是加载项)的设置。我怀疑这会解决问题。 我尝试使用以下方法将服务器连接到AAD: How to: Use an Office 365 SharePoint site to authorize provider-hosted apps on an on-premises SharePoint site。再次,这更像是在黑暗中拍摄的。
如何获取AAD的令牌并使用它来从Cordova移动应用程序执行针对内部部署SharePoint的请求?