具有 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 查看它?