如何在 Outlook 加载项中存储凭据

How to store credentials in an Outlook Add-in

我正在寻找正确、安全的方式来在 Outlook 加载项中存储第三方 API 的凭据。 This overview of the different storage options only says not to store credentials in Settings, but not where to put them, so I assumed the RoamingSettings would be okay. Then I ran into this page 包含关于 RoamingSettings 的信息,它说这也不是正确的位置。

问题就变成了: 哪个地方是正确的?我应该构建自己的存储解决方案和 store/encrypt 文件或 cookie 中的凭据吗?这也让人感觉不太安全,因为我们谈论的基本上是 Iframe 中的 Web 应用程序 运行。

您可以像 Outlook 本身对其 POP3/SMTP/IMAP4 密码所做的那样 - 使用 CredRead / CredWrite Windows API 功能。数据只能在用于加密数据的本地 Windows 帐户下解密,因此不能带到不同的机器上解密。

我认为您无法从 JavaScript 访问这些功能。这是用于 OWA 插件,而不是 Outlook 应用程序,是吗?

我假设您无法为您的 API 实施其他授权方案(基于令牌、cookie 等),并且您只能使用基本身份验证和 its issues。如果您使用的是 ASP.NET,在所有示例可用的情况下,可以很容易地添加另一个更适合 Web 客户端(例如 Office Web 加载项)的身份验证方案。

话虽如此,对我而言,您最好的选择是使用 HTML5 存储或 cookie 存储(如果浏览器未实现)来存储您的凭据。

应用程序是 iFramed 的事实并不是什么大问题。这些存储(HTML5:sessionStorage/localStorage)依赖于域分离,这意味着您将放置凭据的存储槽不会被其他应用程序看到,即使是那些生活在父 iFrame 上的应用程序。

您还可以考虑这样一个事实,即您可以从同一域提供 Web 插件和 API。它们都是网络应用程序!