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

2024-01-11

The Goal

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

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

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

与博文类似代表用户访问 SharePoint https://azure.microsoft.com/en-gb/documentation/articles/mobile-services-dotnet-backend-calling-sharepoint-on-behalf-of-user/,但使用本地服务器而不是 O365:

  1. 客户端登录使用适用于 Apache Cordova 的 ADAL https://github.com/AzureAD/azure-activedirectory-library-for-cordova.
  2. 通过混合连接连接到本地服务器的移动服务。
  3. 使用 ADAL.net 使用步骤 1 中获取的令牌获取 SharePoint 服务器的令牌。

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

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

我们已经按照 Kirk Evans 在本文档中的描述设置了 Azure 应用程序代理post http://blogs.msdn.com/b/kaevans/archive/2015/04/13/azure-ad-application-proxy-and-sharepoint-2013.aspx。 移动服务的 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 https://login.microsoftonline.com。 我尝试通过将令牌作为“id_token=”发布到应用程序代理来模拟使用浏览器时完成的握手,但这似乎有点牵强,并且不是 Azure 应用程序代理设置的目的。

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

Question

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


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • java HttpURLConnection.setRequestMethod() 不起作用

    我想将请求方法从 GET 更改为 POST 这是我的代码 HttpURLConnection connection null URL url new URL https accounts google com o oauth2 token
  • VSCode - 导入键盘快捷键

    我正在使用 VSCodeWindows and Ubuntu我希望在这两种环境中都具有相同的键盘快捷键 节省我的大脑记忆空间 用于比热键更有用的东西 有没有办法export一种环境中的键盘快捷键设置以及import他们在另一个 或者还有其他
  • 比较两个字典中的键和值

    我想获取一个字典中填充的聚合数字 并将键和值与另一字典中的键和值进行比较 以确定两者之间的差异 我只能得出这样的结论 for i in res keys if res2 get i print match i else print i do
  • iPhone 开发者的 IRC 频道? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有一个好的 IRC 频道可以让 iPhone 开发人员聚在一起讨论代码等 人们已经在使用任何
  • 如何在Excel VBA中进行多重转置

    我有一个分散的项目列表 我需要将它们全部放在一列中 分散的项目可以放入空白单元格内的一列中 这是我的要求 第一列中的值不得更改位置 我有一个进行转置的代码 但它改变了第一列中值的位置 将所有内容放在一起 因此粉色的位置 第 9 个 变为第
  • Rails:保存后验证关联?

    我有一个User模型有很多roles 角色包含一个user id领域 我想要validate presence of 问题是 如果我在创建时为用户分配角色 验证将失败 因为未设置 user id 现在我do想要验证 user id 是否存在
  • 连接两个具有不同数据的相同表结构

    Edit After attempting the COALESCE method I m now seeing an issue where the data is repeating itself with the same data
  • 为 Ubuntu 中的现有文件创建新的 BitBucket 存储库

    我有一些文件想要添加到 BitBucket 上的新存储库中 如何使用 Ubuntu 命令行执行此操作 另一种方法是首先从 BitBucket 网站创建存储库 但我不知道如何将存储库克隆到非空目录中 更多详细信息布鲁斯的评论 https st
  • MySQL 查询当前周的yearweek 从周四开始,周三结束

    我有一个SQL设置语句以获取当前日历周的数据 默认情况下 这会抓取从周日开始到周六结束的数据 我希望改变这一点 以便日历周的开始是星期四 星期三结束 以下是我的发言 SELECT FROM transactions WHERE yearwe
  • 使用 mongo java 驱动程序执行查找时 Cosmos Db 回复消息长度错误

    使用 Mongo Java 驱动程序版本 3 4 2 尝试对包含大约 700 个文档的集合执行查找查询已开始引发以下异常 当集合较小时 这种情况不会发生 这些限制看起来是在连接过程中设置的 com mongodb MongoInternal
  • 聚合物服务和服务人员

    我正在尝试开始调试我的聚合物应用程序 我通过复制我的想法手工制作了它PolymerCLI Polymer init does 我不确定正在加载服务人员的是什么 开发的默认选项只做了一个console info 打电话说它已被禁用以进行开发
  • 在 R 中查找给定数据的“行方式”“众数”[重复]

    这个问题在这里已经有答案了 Unlike rowMeans and rowMedians 这给了我们计算出来的数字 mode x 给出数据的存储模式 我的问题 对于以下数据框 我如何计算row wise Mode Data Item A B
  • 如何在 OS X 上监视文件更改?

    我希望收到有关写入给定文件的通知 无需轮询 无需从文件中读取 也无需监视父目录并查看文件修改时间戳 我怎么做 我找不到一个简单的例子 所以我贡献我的想法以供将来参考 interface FileWatch property assign d
  • Delphi 中的 DataModule (dm) 是什么?

    在您的项目中使用 DataModule 的目的是什么 与普通的类或模块相比 它有什么特殊的属性吗 它通常用于什么约定 数据模块是一种非可视 表单 容器 可以包含非可视组件 通常是数据库组件 尽管可以添加任何组件 例如对话框和Indy htt
  • 数组初始化C

    这个初始化的意义是什么 char arr 10 0 我熟悉char arr 10 0 它将所有元素设置为零 并且char arr 10 1 2 它将前两个元素设置为 1 和 2 ascii 其余元素设置为 0 我对上面的格式不熟悉 快速测试
  • 将元组转换为 proplist

    如何从 MongoDB 转换元组 id lt lt vasya gt gt password lt lt 12ghd gt gt age undefined 到支柱列表 id lt lt vasya gt gt password lt lt
  • 为什么当我运行此测试时,这个 sinon 间谍没有被调用?

    我有一个骨干模型 class DateTimeSelector extends Backbone Model initialize gt bind change date updateDatetime bind change time up
  • 在 ASP.NET 中下载文件而不弹出窗口

    我正在使用代码下载文件 btnDownloadTemplate Attributes Add onClick window open StudyReport WordReportTemplate doc OpenTemplate resiz
  • 使用 selenium 在 Chrome 中“未知错误:无法读取 null 的属性‘scrollleft’”

    在 Chrome 中 当我单击按钮时 出现 未知错误 cannot read property scrollleft of null 他们是该页面中的 1 个输入字段 我可以输入值 因为只有按钮单击不起作用 此点击在 Firefox 中运行
  • 使用从 Azure AD 和 ADAL 获取的令牌访问本地 SharePoint

    The Goal 使用 OAuth 从基于 Apache Cordova 的移动应用程序通过 REST 请求访问本地 SharePoint 数据 到目前为止我已经尝试过的 1 Azure 移动服务 混合连接 AAD ADAL 与博文类似代表