具有 AAD v1 应用注册的 Office 加载项 SSO

Posted

技术标签:

【中文标题】具有 AAD v1 应用注册的 Office 加载项 SSO【英文标题】:Office Add-In SSO with an AAD v1 app registration 【发布时间】:2018-09-07 02:35:47 【问题描述】:

我正在开发一个办公插件。 此 office 加载项应该从 SharePoint 检索术语库。 通过遵循本教程: https://docs.microsoft.com/en-us/office/dev/add-ins/develop/create-sso-office-add-ins-aspnet 我设法获得了用于 Graph api 的访问令牌。但是,图表没有公开任何获取术语库的方式。有没有一种方法可以生成用于 SharePoint 的访问令牌并维护 SSO? 通过注册 Azure AD v1 应用程序可能是可能的,但我找不到任何描述它的文档。

【问题讨论】:

【参考方案1】:

我有类似的要求,但在我的研究中,我无法为这种情况找到一个好的解决方案。

我认为可能可以使用提供商托管的 SharePoint 加载项。然后使用授权码流程获取访问令牌。由于 SharePoint 加载项是受信任的,因此不需要用户登录。

当然,这确实意味着需要在 SharePoint 中部署加载项。如果您的 Office 加载项是通过商店分发的,这并不是一个很好的解决方案。

希望有其他方法可以达到同样的效果。

【讨论】:

【参考方案2】:

您可以使用 Azure Active Directory 应用程序调用 SharePoint Online API(通过 REST 或 CSOM)。要调用受 Azure AD 保护的 API,您的应用必须从 Azure Active Directory 获取访问令牌。

请先参考this document 将应用程序与 Azure Active Directory 集成。然后使用Azure Active Directory Authentication Library (ADAL) 轻松地对云或本地 Active Directory (AD) 的用户进行身份验证,并获取访问令牌以保护 API 调用。

【讨论】:

使用 REST Api 获取术语库似乎非常困难。有可以调用的 TaxonomyInternalService.json,但是这个需要一些身份验证 cookie(我相信 SharePoint Online 的 FedAuth cookie)。这可能适用于 SharePoint 托管的应用程序,但不适用于提供商托管的应用程序。不过,CSOM 方法似乎效果很好。 目前这就是我想要的 (ADAL),即使它需要用户交互。

以上是关于具有 AAD v1 应用注册的 Office 加载项 SSO的主要内容,如果未能解决你的问题,请参考以下文章

AAD B2C 中具有客户端凭据授予流的 Azure 应用服务轻松身份验证

如何使用MSAL.js为Azure DevOps获取有效的AAD v2令牌

为啥我无法在 Azure 门户中访问我的 AAD 应用注册,但我可以使用 Azure CLI 查看它?

AAD目录同步失败的解决方法

向 AAD B2C 注册 AzureFunctions 应用程序

Azure AAD 应用注册:JWT 中缺少可选声明