Office js 是否可以使用Office加载项SSO而不让服务器参与身份验证过程?

Office js 是否可以使用Office加载项SSO而不让服务器参与身份验证过程?,office-js,outlook-web-addins,Office Js,Outlook Web Addins,我正在研究将Microsoft Graph单点登录用于我们部署给客户的Outlook Office JS加载项。外接程序文件托管在我们拥有的中心外接程序服务上,所有不同的客户清单都会引用该服务 在Microsoft教程中,他们提到创建客户机机密。从我在教程(例如yeoman Office SSO生成器)中看到的情况来看,一旦在Azure中创建了机密,就需要在调用中传递它,以使用Office js通过getAccessToken方法获得的初始引导令牌检索MS Graph访问令牌 在yeoman生成

我正在研究将Microsoft Graph单点登录用于我们部署给客户的Outlook Office JS加载项。外接程序文件托管在我们拥有的中心外接程序服务上,所有不同的客户清单都会引用该服务

在Microsoft教程中,他们提到创建客户机机密。从我在教程(例如yeoman Office SSO生成器)中看到的情况来看,一旦在Azure中创建了机密,就需要在调用中传递它,以使用Office js通过getAccessToken方法获得的初始引导令牌检索MS Graph访问令牌

在yeoman生成器示例中,机密存储在Windows凭据中,在服务器启动时读取,并放置在环境变量中,当客户端调用以验证外接程序时,服务器可以访问该环境变量。对于由多个客户使用的外接程序服务,这需要访问多个客户端机密,并根据类似密钥的客户端ID使用正确的客户端机密。访问/管理此类存储的功能目前不适用于我们的外接程序服务,到目前为止,它仅用于服务外接程序脚本

是否需要让服务器参与带有Office加载项的MS Graph的SSO身份验证过程?单靠客户端插件代码能否以安全的方式实现到Microsoft Graph的SSO

  • 将特定于客户的机密写入每个清单将是一个安全缺陷,因为有权访问清单的任何人都可以复制加载项授权详细信息,并通过其加载项使用我们服务的注册,对吗?但是,除了我们的外接程序服务及其FQDN之外,配置的应用程序URI不会阻止任何服务使用它吗
相关Microsoft文档

  • _

如果您愿意放弃SSO并强制用户在第一次访问MS Graph时登录,即使他们已经登录到Office,也可以使用纯客户端方法,特别是隐式流


但是,如果您想使用SSO,就无法避免使用服务器,因为您使用SSO获得的引导令牌必须使用代表流(这是一种服务器端流)进行交换。

出于好奇,是否有技术限制将流限制为仅限于服务器端?如果我的外接程序客户端可以使用客户端密码,那么是否会因为CORS配置等原因而无法从客户端调用相同的流?取决于您所说的技术限制。它只是内置在代理流的设计中,即它是一个服务器到服务器的流。