从O365华夫饼干菜单

时间:2017-05-05 08:53:25

标签: azure office365 azure-active-directory microsoft-graph azure-ad-graph-api

用户使用他的Microsoft学校/组织帐户登录我们的系统后,我正在尝试检索有关他可用的应用程序的数据。

通常,人们会在输入例如portal.office.com时在所谓的“华夫饼干菜单”中看到此信息,如下图所示。

在检查网站的请求后,我发现它正在从https://portal.office.com/api/myapps/GetAllApp获取数据。但是,为了能够访问此资源,需要为office.com登录(即具有会话cookie),但我的应用程序使用基于令牌的身份验证 - 我已在Azure AD中注册了我的应用程序,授予了它访问某些服务(如MS Graph API)的权限,然后我使用令牌发出请求以访问这些服务。

问题是我可以从某些“Azure友好”应用程序(例如MS Graph API)获取华夫饼干菜单信息吗?或者,您知道检索此信息的其他任何方式吗?

感谢您提供任何帮助或提示。

The waffle menu

2 个答案:

答案 0 :(得分:1)

这不是通过Microsoft Graph支持/提供的。

我也不知道公开用户的华夫饼干菜单的API。我建议看看PowerShell for Office 365。鉴于此体验与O365 Web UI隔离,我怀疑这不是通过API浮出水面。

答案 1 :(得分:0)

我知道这个问题已经有一年了,但也许其他人很难从O365获取应用信息。

据我所知,没有可用于安全获取信息的公共API。但是通过一些解决方法,您可以从Office 365获取当前登录用户的应用程序:

以下是实现此目标所需的基本步骤:

  • 创建(空白)SharePoint .aspx页面
    • <WebPartPages:AllowFraming runat="server" />标记添加到页面 - &gt;这将允许您从任何不同的环境构建页面
    • 向页面添加脚本标记并阅读localStorage [“SPSuiteLinksJson”]属性 - &gt;在那里,包含用户应用程序的所有相关信息
    • 将localStorage对象(window.top.postMessage(suiteLinks, "*");)推送到父框架
  • 将.aspx页面上载到SharePoint Online中的库并为组织中的所有用户授予读取权限
  • 在您控制的Web应用程序中包含iFrame
    • 确保使用指向SharePoint Online页面的智能链接(例如https://login.microsoftonline.com/login.srf?wa=wsignin1.0&whr=<your adfs server>&wreply=https://<your tenant name>.sharepoint.com/pages/your-apps-proxy-page.aspx
    • message事件注册JavaScript事件侦听器以从SharePoint Online接收localStorage对象

就是这样,现在您可以获得有关当前登录用户的应用程序的信息。感谢Smart Link,用户无需事先登录office.com即可获取会话cookie。

有关详细信息,请参阅此博客文章:https://sharepoint.cberger.ch/2018/03/09/office-365-app-launcher-on-prem/