Outlook外接程序OIDC认证后访问令牌的处理及相关疑问
针对Outlook外接程序OIDC认证问题的解答
1. 任务窗格获取访问令牌后该如何处理?
不要手动存储令牌,直接把它交给angular-auth-oidc-client管理。这个库本身具备令牌安全存储、自动附加到API请求等能力,完全适配通用OIDC场景——微软文档中提到的“不要存储访问令牌”仅针对Office专属SSO方案,和你用的通用OIDC认证无关。
具体操作可调用库提供的方法(比如storeTokens或通过signInCallback模拟回调流程),将从对话框收到的令牌注入到库的状态中。之后发起API请求时,库的HTTP拦截器会自动将令牌添加到请求头里,无需手动处理。
2. 在此场景下如何处理令牌过期?
利用angular-auth-oidc-client的内置能力即可:
- 如果你的OIDC流程配置了refresh token,库会自动跟踪访问令牌的过期时间,在令牌到期前自动发起刷新请求,无需额外代码。
- 如果没有refresh token,可监听库的令牌过期事件,触发后重新调用
Office.UI.displayDialogAsync打开IDP的授权页面,完成新的认证流程,再将新令牌注入到库中。
避免手动跟踪过期时间,依赖库的内置逻辑更可靠。
3. 是否有对接非微软IDP的认证示例?
目前官方没有专门针对非微软IDP的Outlook外接程序示例,但可以基于通用OIDC流程+Angular外接程序的组合实现,核心步骤如下:
- 配置
angular-auth-oidc-client时,将非微软IDP的授权端点、令牌端点、用户信息端点等地址填入配置项,替代微软Azure AD的地址。 - 登录触发:在任务窗格中调用
Office.UI.displayDialogAsync,打开你配置的IDP授权页面(注意要将外接程序的域名加入IDP的允许列表)。 - 令牌传递:在认证完成后的回调页面中,获取IDP返回的令牌,通过
Office.UI.messageParent将令牌发送回任务窗格。 - 令牌接管:任务窗格接收令牌后,调用
angular-auth-oidc-client的方法完成令牌注入,让库接管后续的令牌管理和API请求处理。
内容的提问来源于stack exchange,提问作者ZrSiO4
相关产品推荐
相关产品推荐

